Этот материал находится в платной подписке. Оформи премиум подписку и смотри или слушай Flutter, TDD, Clean Architecture, SOLID e Design Patterns, а также все другие курсы, прямо сейчас!
Премиум
  1. Урок 1. 00:02:45
    Pra quem é esse curso?
  2. Урок 2. 00:17:31
    Configurando o Git
  3. Урок 3. 00:01:05
    Ajuste da aula anterior
  4. Урок 4. 00:14:53
    Dica para o treinamento
  5. Урок 5. 00:16:15
    BDD, UseCase e Diagrama de Dependências
  6. Урок 6. 00:05:43
    Criando o Authentication UseCase
  7. Урок 7. 00:18:03
    Criando o RemoteAuthentication e integrando com o HttpClient
  8. Урок 8. 00:21:40
    Testando o body do request
  9. Урок 9. 00:16:52
    Testando casos de exceção do HttpClient
  10. Урок 10. 00:27:46
    Testando caso de sucesso
  11. Урок 11. 00:22:59
    Criando o HttpAdapter e testando o post
  12. Урок 12. 00:17:11
    Testando casos de sucesso
  13. Урок 13. 00:21:25
    Testando casos de erro
  14. Урок 14. 00:13:51
    Criando os Widgets da tela de Login
  15. Урок 15. 00:21:17
    Criando estilo para os Widgets
  16. Урок 16. 00:08:32
    Criando ícone para o aplicativo
  17. Урок 17. 00:27:14
    MVC vs MVVM vs MVP vs BLOC
  18. Урок 18. 00:17:11
    Testando estado inicial do LoginPage
  19. Урок 19. 00:37:47
    Testando estados do formulário no LoginPage
  20. Урок 20. 00:26:03
    Testando estados da ação de fazer login
  21. Урок 21. 00:19:12
    Reutilizando o presenter nos Widgets com Provider
  22. Урок 22. 00:29:18
    Criando o LoginPresenter com StreamController
  23. Урок 23. 00:25:57
    Integrando o StreamLoginPresenter com o Validation
  24. Урок 24. 00:28:54
    Integrando o StreamLoginPresenter com o Authentication
  25. Урок 25. 00:15:20
    Criando o RequiredFieldValidation
  26. Урок 26. 00:13:02
    Criando o EmailValidation
  27. Урок 27. 00:23:13
    Criando o ValidationComposite
  28. Урок 28. 00:27:20
    Fazendo a composição da tela de Login
  29. Урок 29. 00:15:49
    Aplicando o Design Pattern Builder
  30. Урок 30. 00:02:18
    Tornando o construtor do ValidationBuilder privado
  31. Урок 31. 00:42:09
    Refatorando para usar o GetX como gerenciador de estado
  32. Урок 32. 00:12:49
    Criando caso de uso para gravar o token de acesso no cache
  33. Урок 33. 00:25:43
    Criando o LocalSaveCurrentAccount
  34. Урок 34. 00:19:46
    Criando o LocalStorageAdapter e integrando com o Flutter Secure Storage
  35. Урок 35. 00:35:33
    Integrando o LoginPresenter ao SaveCurrentAccount
  36. Урок 36. 00:08:30
    Criando o caso de uso para carregar os dados da conta do usuário
  37. Урок 37. 00:23:55
    Criando o LocalLoadCurrentAccount
  38. Урок 38. 00:12:26
    Integrando o FetchSecureCacheStorage ao LocalStorageAdapter
  39. Урок 39. 00:23:52
    Criando a tela de Splash
  40. Урок 40. 00:20:34
    Criando o Presenter para o Splash Page com GetX
  41. Урок 41. 00:12:04
    Fazendo a composição do Splash Page
  42. Урок 42. 00:18:46
    Aplicando i18n
  43. Урок 43. 00:46:44
    Refatorando o projeto para centralizar as traduções na UI Layer
  44. Урок 44. 00:07:25
    Criando o UseCase do AddAccount
  45. Урок 45. 00:26:42
    Testando a implementação do AddAccount UseCase voltado para API
  46. Урок 46. 00:12:20
    Testando o estado inicial do SignUp Page
  47. Урок 47. 00:22:19
    Testando a validação do formulário do SignUp Page
  48. Урок 48. 00:18:32
    Finalizando os testes do SignUp Page
  49. Урок 49. 00:12:18
    Testando o Validation no SignUpPresenter
  50. Урок 50. 00:28:53
    Testando o AddAccount no SignUpPresenter
  51. Урок 51. 00:13:44
    Testando navegação entre as telas de Login e SignUp
  52. Урок 52. 00:14:08
    Criando o MinLengthValidation
  53. Урок 53. 00:06:14
    Criando o CompareFieldsValidation
  54. Урок 54. 00:30:34
    Refatorando o projeto por conta de uma modelagem errada
  55. Урок 55. 00:12:24
    Fazendo a composição do SignUp
  56. Урок 56. 00:08:51
    Correção de bug encontrado
  57. Урок 57. 00:11:26
    Criando o LoadSurveys UseCase
  58. Урок 58. 00:08:57
    Testando a integração do RemoteLoadSurveys com o HttpClient
  59. Урок 59. 00:29:00
    Testando casos de sucesso da API
  60. Урок 60. 00:10:14
    Testando casos de exceção da API
  61. Урок 61. 00:14:14
    Implementando o Get no HttpAdapter
  62. Урок 62. 00:17:10
    Criando a interface da tela de Surveys
  63. Урок 63. 00:21:33
    Testando o estado inicial e a stream de loading
  64. Урок 64. 00:19:42
    Testando a stream de dados da enquete
  65. Урок 65. 00:06:28
    Testando dados corretos das enquetes
  66. Урок 66. 00:32:48
    Criando o GetxSurveysPresenter e testando suas streams
  67. Урок 67. 00:03:10
    Movendo o GetxSurveysPresenter para produção
  68. Урок 68. 00:15:24
    Fazendo a composição do Surveys Page
  69. Урок 69. 00:11:33
    Adicionando headers no HttpClient
  70. Урок 70. 00:35:49
    Aplicando o Design Pattern Decorator
  71. Урок 71. 00:08:07
    Alterando a composição para usar o Decorator
  72. Урок 72. 00:08:55
    Correção de bug encontrado
  73. Урок 73. 00:10:47
    Criando os requerimentos para listar enquetes offline
  74. Урок 74. 00:21:09
    Testando o caso de sucesso do LocalLoadSurveys
  75. Урок 75. 00:17:20
    Testando casos de erro do LoadLocalSurveys
  76. Урок 76. 00:20:30
    Fazendo o LocalLoadSurveys implementar o Validate
  77. Урок 77. 00:21:00
    Fazendo o LocalLoadSurveys implementar o Save
  78. Урок 78. 00:08:21
    Separando a implementação do cache e do cache seguro
  79. Урок 79. 00:16:32
    Testando o Save do LocalStorageAdapter
  80. Урок 80. 00:07:32
    Testando o Delete do LocalStorageAdapter
  81. Урок 81. 00:09:51
    Testando o Fetch do LocalStorageAdapter
  82. Урок 82. 00:08:11
    Movendo o ValidationComposite para o Main Layer
  83. Урок 83. 00:14:47
    Testando caso de sucesso do Composite
  84. Урок 84. 00:17:00
    Testando casos de exceção do Composite
  85. Урок 85. 00:21:03
    Fazendo a composição com o novo Composite
  86. Урок 86. 00:12:49
    Criando o caso de uso do LoadSurveyResult
  87. Урок 87. 00:27:59
    Criando a implementação do LoadSurveyResult com API
  88. Урок 88. 00:05:32
    Criando a estrutura de arquivos
  89. Урок 89. 00:19:39
    Criando o layout da tela de resultado da enquete
  90. Урок 90. 00:17:56
    Testando o estado inicial e a stream de loading
  91. Урок 91. 00:19:39
    Testando casos de erro
  92. Урок 92. 00:25:15
    Testando caso de sucesso
  93. Урок 93. 00:11:34
    Refatorando o código
  94. Урок 94. 00:19:30
    Criando o GetxSurveyResultPresenter e testando suas streams
  95. Урок 95. 00:15:51
    Adicionando link entre Survey e SurveyResult
  96. Урок 96. 00:11:30
    Criando a composição da tela de resultado da enquete
  97. Урок 97. 00:24:34
    Limpando o token de acesso do Cache no erro 403
  98. Урок 98. 00:23:03
    Deslogando o usuário em caso de acesso negado
  99. Урок 99. 00:13:34
    Aplicando o DRY com o uso de Mixins nos Presenters
  100. Урок 100. 00:18:58
    Aplicando o DRY com o uso de Mixins nos Widgets
  101. Урок 101. 00:05:21
    Evitando Memory Leaks
  102. Урок 102. 00:28:34
    Implementando o método de Load
  103. Урок 103. 00:06:17
    Implementando o método de Validate
  104. Урок 104. 00:18:49
    Implementando o método de Save
  105. Урок 105. 00:21:39
    Aplicando o Design Pattern Composite 1/2
  106. Урок 106. 00:21:27
    Aplicando o Design Pattern Composite 2/2
  107. Урок 107. 00:09:42
    Alterando a composição do SurveyResult para usar o Composite
  108. Урок 108. 00:05:51
    Ajuste no save do LocalLoadSurveyResult
  109. Урок 109. 00:07:18
    Domain Layer
  110. Урок 110. 00:18:31
    Data Layer
  111. Урок 111. 00:05:26
    Infra Layer
  112. Урок 112. 00:10:30
    UI Layer
  113. Урок 113. 00:16:40
    Presentation Layer
  114. Урок 114. 00:08:21
    Main Layer
  115. Урок 115. 00:21:51
    Correção de bugs encontrados
  116. Урок 116. 00:15:38
    Fazendo reload de uma tela após o evento de back do navigation
  117. Урок 117. 00:15:30
    Simplificando os testes de UI com helpers
  118. Урок 118. 00:30:05
    Refatorando os Mocks 1/3
  119. Урок 119. 00:21:01
    Refatorando os Mocks 2/3
  120. Урок 120. 00:08:11
    Refatorando os Mocks 3/3
  121. Урок 121. 00:13:37
    Migrando para a versão nova do Flutter com FVM
  122. Урок 122. 00:19:23
    Migrando mockito para mocktail
  123. Урок 123. 00:24:24
    Removendo meta.dart
  124. Урок 124. 00:18:04
    Corrigindo erros da pasta lib
  125. Урок 125. 00:08:17
    Corrigindo erros da pasta test
  126. Урок 126. 00:27:11
    Refatorando os mocks
  127. Урок 127. 00:15:47
    Corrigindo bug do mocktail que retorna null pra todos os mocks (até para void)
  128. Урок 128. 00:19:31
    Extraindo mocks do Data Layer
  129. Урок 129. 00:26:31
    Extraindo mocks do Infra Layer
  130. Урок 130. 00:30:29
    Extraindo mocks do Main Layer
  131. Урок 131. 00:30:37
    Extraindo mocks do Presentation Layer
  132. Урок 132. 00:35:54
    Extraindo mocks do UI Layer
  133. Урок 133. 00:07:34
    Ajustes finais