Curso online gratuitoFlutter: Desenvolvimento de App com Firebase, GraphQL, Offline First, Testes e CI/CD
Duração do curso online: 24 horas e 10 minutos
Novo
Curso gratuito de Flutter com Firebase e GraphQL: app completo com Offline First, testes, TDD e CI/CD, do zero à publicação.
Neste curso gratuito, aprenda sobre
Visão Geral e Criação do Projeto
UI Inicial: Splash, Estilos, Assets e Onboarding
Formulários e Experiência de Cadastro
Arquitetura e Padrões: Controllers, Services, Navegação e Injeção de Dependências
Autenticação com Firebase e Persistência Local
Testes no Flutter: Unitários, Widget e Mocks
Home, Navegação por Abas e Organização em Camadas
Backend com Hasura e Integração com Firebase
GraphQL no Flutter: Client, Service e Consumo de API
Componentização, Agregações e Features de Transações e Carteira
Tratamento de Erros e Refatoração Assistida por IA
Offline First e Sincronização
Testes de Integração e CI com Firebase Test Lab
TDD e Desenvolvimento da Feature de Perfil
Estatísticas e Gráficos
Build, Assinatura e Publicação nas Lojas
CI/CD Completo e Feature de Recuperação de Senha
Descrição do curso
Aprenda a desenvolver um aplicativo completo com Flutter, explorando um fluxo real de produto do zero até a publicação. Neste curso gratuito, você constrói um app financeiro com foco em boas práticas de interface, organização de projeto e evolução incremental, passando por telas essenciais como onboarding, cadastro e navegação, com atenção a temas, estilos, componentes reutilizáveis e validações robustas de formulários.
Ao longo do desenvolvimento, você integra autenticação e recursos de backend, trabalhando com Firebase e GraphQL para criar uma base moderna e escalável. Você também aplica padrões de arquitetura e camadas como services, repositories e injeção de dependências, além de aprender a lidar com exceções e refatorações para manter o código sustentável conforme o app cresce.
O curso enfatiza qualidade e confiabilidade, incluindo testes unitários, de widget e de integração, uso de mocks e práticas de TDD para modelar funcionalidades com segurança. Para cenários do mundo real, você implementa uma estratégia Offline First com sincronização e persistência local, garantindo uma boa experiência mesmo sem conexão.
Para fechar o ciclo de entrega, você configura automações de CI/CD com pipelines e validações, cobre métricas de cobertura de testes e prepara o aplicativo para distribuição. Também são abordados detalhes importantes de assinatura, publicação e gerenciamento de releases, ajudando você a levar seu app do ambiente de desenvolvimento até as lojas com mais confiança.
Conteúdo do curso
Aula em vídeo: App Financeiro com Flutter: apresentação (EP01)07m
Exercício: No MVP inicial do app financeiro, quais funcionalidades foram priorizadas?
Aula em vídeo: App Financeiro com Flutter: flutter create (EP02)11m
Aula em vídeo: App Financeiro com Flutter: widgets e arquitetura inicial (EP03)18m
Exercício: Ao criar a tela de Splash no Flutter, qual é a forma correta de aplicar um gradiente de fundo em um Container?
Aula em vídeo: App Financeiro com Flutter: splash page, cores e estilos de texto (EP04)10m
Aula em vídeo: App Financeiro com Flutter: pubspec.yaml e assets (EP05)15m
Exercício: Qual é o arquivo onde se declara a fonte personalizada e o caminho dos assets (imagens) para o Flutter reconhecer no projeto?
Aula em vídeo: App Financeiro com Flutter: onboarding page, layout e botões (EP06)19m
Aula em vídeo: App Financeiro com Flutter: widgets personalizados (EP07)32m
Exercício: Ao precisar de um botão com fundo em gradiente no Flutter, qual abordagem é a mais adequada para permitir o uso de LinearGradient e ainda manter o efeito de toque?
Aula em vídeo: App Financeiro com Flutter: refatoração e reuso de código (EP08)09m
Aula em vídeo: App Financeiro com Flutter: RichText, Row, GestureDetector e TextButton (EP09)25m
Exercício: Ao criar um texto com partes clicáveis e estilos diferentes no Flutter, qual abordagem tende a reduzir a complexidade e aproveitar melhor widgets nativos?
Aula em vídeo: App Financeiro com Flutter: refatoração da onboarding page (EP10)14m
Aula em vídeo: App Financeiro com Flutter: sign up page, TextFormField e TextField (EP11)14m
Exercício: Ao implementar campos de e-mail e senha em uma tela de cadastro, qual widget é mais adequado quando você precisa de validação nativa por campo (ex.: e-mail obrigatório) dentro de um formulário?
Aula em vídeo: App Financeiro com Flutter: personalização de campos e temas (EP12)12m
Aula em vídeo: App Financeiro com Flutter: propriedades visuais do TextFormField (EP13)30m
Exercício: Em Flutter, qual abordagem permite reutilizar uma borda padrão (OutlineInputBorder) e alterar apenas alguns atributos, como a cor no estado de foco, sem recriar tudo do zero?
Aula em vídeo: App Financeiro com Flutter: setState e campo de senha (EP14)18m
Aula em vídeo: App Financeiro com Flutter: Form, GlobalKey e validação de campos de formulários (EP15)22m
Exercício: No Flutter, qual é o comportamento correto da propriedade validator em um TextFormField ao chamar FormState.validate()?
Aula em vídeo: App Financeiro com Flutter: initState, onChanged e helperText (EP16)12m
Aula em vídeo: App Financeiro com Flutter: validações com RegEx (EP17)25m
Exercício: Ao organizar validações de formulário em Flutter, qual abordagem melhora a separação de responsabilidades?
Aula em vídeo: App Financeiro com Flutter: controller, ChangeNotifier e State Pattern (EP18)26m
Aula em vídeo: App Financeiro com Flutter: showDialog e showModalBottomSheet (EP19)24m
Exercício: Ao usar um Container no Flutter, qual é a forma correta de aplicar cor e borda arredondada sem gerar erro de propriedades conflitantes?
Aula em vídeo: App Financeiro com Flutter: service pattern (EP 20)27m
Aula em vídeo: App Financeiro com Flutter: navegação e rotas (EP21)19m
Exercício: Ao navegar da Splash Page para a próxima tela, qual método evita que a Splash permaneça na pilha de navegação, impedindo o retorno para ela ao pressionar voltar?
Aula em vídeo: App Financeiro com Flutter: snippets e sign up page (EP22)16m
Aula em vídeo: App Financeiro com Flutter: service locator pattern e injeção de dependências (EP23)20m
Exercício: No padrão Service Locator usando GetIt, qual a diferença prática entre registrar uma dependência com registerLazySingleton e com registerFactory?
Aula em vídeo: App Financeiro com Flutter: Firebase Authentication (EP24)31m
Aula em vídeo: App Financeiro com Flutter: persistência de dados com Secure Storage (EP25)28m
Exercício: Ao implementar um fluxo de login/cadastro no Flutter com Firebase, qual é uma estratégia adequada para evitar buscar dados do usuário a todo momento e permitir que a Splash decida se navega para Home ou Login?
Aula em vídeo: App Financeiro com Flutter: conclusão do fluxo de autenticação (EP26)18m
Aula em vídeo: App Financeiro com Flutter: testes unitários e testes de widget (EP27)26m
Exercício: Na pirâmide de testes em Flutter/Dart, qual tipo de teste tende a ter maior grau de confiança e também maior custo de manutenção e execução mais lenta?
Aula em vídeo: App Financeiro com Flutter: Mocktail (EP28)41m
Aula em vídeo: App Financeiro com Flutter: BottomAppBar e PageView (EP29)28m
Exercício: Para evitar que as páginas de um PageView sejam destruídas e reconstruídas a cada troca de aba, qual abordagem mantém o estado (ex.: initState) sendo executado apenas uma vez por página?
Aula em vídeo: App Financeiro com Flutter: construção da home e uso de tamanhos proporcionais (EP30)32m
Aula em vídeo: App Financeiro com Flutter: repository pattern (EP31)30m
Exercício: No padrão Repository em Flutter, qual é o principal papel do repositório na arquitetura do app?
Aula em vídeo: App Financeiro com Flutter: feature sign out (EP32.1)11m
Aula em vídeo: App Financeiro com Flutter: backend com Hasura (EP32.2)16m
Exercício: Qual é o fluxo de integração proposto para sincronizar a criação de usuários entre Firebase e Hasura?
Aula em vídeo: App Financeiro com Flutter: Firebase Auth, Cloud Functions e Hasura (EP32.3)33m
Aula em vídeo: App Financeiro com Flutter: permissões de acesso ao Hasura (EP32.4)11m
Exercício: Ao integrar Firebase Auth com Hasura, qual é o objetivo de configurar o admin_jwt_secret nas variáveis de ambiente do Hasura?
Aula em vídeo: App Financeiro com Flutter: GraphQL Flutter e GraphQL Service (EP32.5)30m
Aula em vídeo: App Financeiro com Flutter: consumo de API com GraphQL (EP32.6)21m
Exercício: Ao converter o campo value vindo da API para o modelo de transação, qual foi o problema tratado e a solução aplicada?
Aula em vídeo: App Financeiro com Flutter: extração de widgets e componentes (EP33.1)27m
Aula em vídeo: App Financeiro com Flutter: BalanceCard, ConstrainedBox e BoxConstraints (EP33.2)22m
Exercício: Ao transformar um widget em componente reutilizável (ex.: lista de transações), qual abordagem é a mais indicada para reduzir acoplamento?
Aula em vídeo: App Financeiro com Flutter: agregação de dados (EP34)27m
Aula em vídeo: App Financeiro com Flutter: feature Transactions (EP35)22m
Exercício: Ao navegar para a tela de transação, como o app decide se deve criar uma nova transação ou atualizar uma existente?
Aula em vídeo: App Financeiro com Flutter: Dart Extensions (EP36)18m
Aula em vídeo: App Financeiro com Flutter: feature Wallet e paginação (EP37)30m
Exercício: Ao implementar paginação de transações com GraphQL, qual é a função do limit e do offset?
Aula em vídeo: App Financeiro com Flutter: refatoração, melhorias e noções de princípios de projeto (EP38)24m
Aula em vídeo: App Financeiro com Flutter: introdução ao tratamento de exceções (EP39)36m
Exercício: Ao adotar a abordagem de DataResult (estilo Either/Railway oriented) para tratar falhas em chamadas GraphQL, qual é a principal mudança em relação a lançar exceções até a tela?
Aula em vídeo: App Financeiro com Flutter: refatorando código com ajuda do Bard e ChatGPT (EP40)29m
Aula em vídeo: App Financeiro com Flutter: Offline First, sqflite e Sync Service (EP41)46m
Exercício: Em um fluxo Offline First com Flutter, qual foi a estratégia usada para manter inserções/atualizações funcionando sem internet e sincronizar depois?
Aula em vídeo: App Financeiro com Flutter: testes de integração e Firebase Test Lab (EP42)30m
Aula em vídeo: App Financeiro com Flutter: Github Actions / CI e Firebase Test Lab (EP43)36m
Exercício: Em um pipeline de CI com GitHub Actions para testes de integração em Flutter usando Firebase Test Lab, qual conjunto de etapas descreve corretamente o fluxo essencial?
Aula em vídeo: App Financeiro com Flutter: cobertura de testes e Codecov (EP44)20m
Aula em vídeo: App Financeiro com Flutter: noções de Test Driven Development (EP45.1)24m
Exercício: No ciclo do TDD, qual sequência descreve corretamente o fluxo usado para evoluir uma funcionalidade com segurança?
Aula em vídeo: App Financeiro com Flutter: Profile Controller com TDD (EP44.2)25m
Aula em vídeo: App Financeiro com Flutter: Profile Page Speed Code (EP45.3)15m
Exercício: Ao construir a tela de perfil no Flutter, qual foi a decisão adotada para não aplicar TDD nessa etapa?
Aula em vídeo: App Financeiro com Flutter: revisão da feature profile (EP45.4)26m
Aula em vídeo: App Financeiro com Flutter: Pull Request e Merge da Profile Feature (EP46)26m
Exercício: Ao integrar mudanças de uma branch em outra via Pull Request, qual prática ajuda a evitar conflitos e manter a branch principal estável?
Aula em vídeo: App Financeiro com Flutter: Funcionalidade de Estatísticas com Gráficos (EP47)28m
Aula em vídeo: App Financeiro com Flutter: Alteração de Ícones (EP48.1)11m
Exercício: Qual é a forma correta de ler uma variável de ambiente definida via Dart Define no Flutter (por exemplo, para configurar o endpoint do GraphQL)?
Aula em vídeo: App Financeiro com Flutter: Assinatura do App (EP48.2)20m
Aula em vídeo: App Financeiro com Flutter: Google Play Console (EP48.3)18m
Exercício: Ao preparar um app Flutter para publicação no Google Play, qual comando gera o arquivo que será enviado para a loja (App Bundle)?
Aula em vídeo: App Rejeitado na Play Store. O que fazer? (EP49)19m
Aula em vídeo: App Publicado, Releases e Tags (EP50)20m
Exercício: Em um fluxo de CI/CD com GitHub Actions, quando é mais adequado executar testes de integração em comparação aos testes unitários?
Aula em vídeo: CI-CD com Envio Automático do App para Play Store e App Store (EP51)21m
Aula em vídeo: Feature Esqueci a Senha (EP52)15m
Exercício: Qual é o comportamento principal da funcionalidade Esquecer a senha implementada com Firebase Authentication?