Programação com Flutter

O curso de extensão “Introdução ao Desenvolvimento de Aplicativos Multiplataformas com Flutter” (CET-0390) aborda o desenvolvimento de aplicações para Android, iOS, Web, Windows, Linux e macOS a partir de uma única base de código, utilizando o framework Flutter.

Com 40 horas de duração e oferecido à distância, o curso combina videoaulas pré-gravadas com encontros síncronos aos sábados, permitindo uma aprendizagem flexível e com acompanhamento. O conteúdo abrange os fundamentos do Flutter e da linguagem Dart, a criação de interfaces gráficas e o processo de compilação para múltiplas plataformas.

Como funciona o curso?

  • 🔹 Aulas assíncronas: Videoaulas gravadas para assistir durante cada semana.
  • 🔹 Aulas síncronas: Encontros ao vivo aos sábados para dúvidas e nivelamento.
  • 🔹 Atividades práticas: Desafios para consolidar o aprendizado.
  • 🔹 Interação e suporte: Fórum e grupo de whatsapp para trocar experiências e esclarecer dúvidas.
  • 🔹 Carga horária: 40 horas
  • 🔹 Número de vagas: 45 alunos, garantindo um acompanhamento mais personalizado
  • 🔹 Diferencial: Suporte direto do professor, análise de códigos e esclarecimento de dúvidas

📅 Detalhes e Inscrição


Sobre o Curso

  • 🛠️ Sigla: CET-0390
  • 📲 Nome: Introdução ao Desenvolvimento de Aplicativos Multiplataformas com Flutter
  • 🎯 Objetivo: Ensinar os fundamentos do framework Flutter, criação de interfaces gráficas com widgets, noções básicas da linguagem Dart e a compilação de códigos para diferentes plataformas.
  • 🏆 Certificação: Curso com certificado de extensão
  • 🎓 Pré-requisito: Nível médio completo. Recomendável ter noções de programação e familiaridade com linguagens orientadas a objetos, mas isso não é obrigatório! Os fundamentos principais serão fornecidos durante o próprio curso.

Principais Características

🌍 Desenvolva para múltiplas plataformas!

🚀 Durante o curso, você aprenderá a criar aplicativos para:

  • ✅ Android & iOS
  • ✅ Web
  • ✅ Windows, Linux e macOS
  • ✅ Qualquer plataforma suportada pelo Flutter

Se você deseja ampliar seus conhecimentos em desenvolvimento multiplataforma com uma única base de código, este curso é para você!


💡 O Flutter é uma das ferramentas mais poderosas para desenvolvimento de aplicativos, com alto desempenho e grande aceitação no mercado. Não perca essa oportunidade!

📚 Tópicos do Curso

Ao longo do curso, os tópicos foram organizados de forma progressiva para conduzir sua aprendizagem do básico ao nível intermediário, de acordo com a proposta do curso.

Todo o conteúdo foi gravado em vídeo durante o processo de construção das aulas, abordando tanto os conceitos teóricos quanto as práticas de desenvolvimento em Flutter. Além disso, todos os vídeos contam com tradução em Libras, realizada por uma intérprete, garantindo acessibilidade e ampliando o alcance do curso para diferentes públicos.

A seguir, você encontrará todos os tópicos abordados. Alguns vídeos de exemplo foram incluídos na listagem para que você possa conhecer melhor o estilo e a qualidade do material antes de realizar sua matrícula.

Tópico 1: Introdução a Widgets.

Você dará os primeiros passos na estruturação do código, aprendendo a montar a base do seu aplicativo. Vamos entender desde o ponto de partida do código até a criação de uma interface funcional e organizada. Esse conhecimento será essencial para que você consiga desenvolver aplicativos estruturados e escaláveis. Então, prepare-se para um módulo essencial para sua jornada no Flutter!

  • Definindo um Ponto de Partida
    Explicação sobre o arquivo main.dart e como ele serve como ponto de entrada para um aplicativo Flutter.

  • Criando um Corpo para o Ponto de Partida
    Introdução ao uso da função runApp() e como ela inicializa a árvore de widgets do Flutter.

  • Definindo uma Base Sólida com MaterialApp
    Explicação sobre o MaterialApp, que fornece estrutura e identidade visual ao aplicativo.

  • Construindo a Estrutura com Scaffold
    Introdução ao Scaffold, que define a estrutura básica de uma tela no Flutter.

  • Fornecendo um Guia Visual com a AppBar (▶️ Assista ao Vídeo)
    Explicação sobre a AppBar, seu uso e sua importância na navegação do usuário.

  • Instituindo a Ação Principal com FloatingActionButton
    Uso do FloatingActionButton para adicionar ações principais ao aplicativo.

  • Organizando a Tela com Widgets de Múltiplos Filhos
    Explicação sobre Column e Row para organizar elementos na tela.

  • Hands-on no DartPad
    Exercício prático utilizando o DartPad para experimentar código.

  • Desmistificando a Widget Tree
    Explicação sobre como os widgets são organizados na árvore de widgets do Flutter.


Tópico 2: Sintaxe Dart.

O Flutter é baseado em Dart, que é uma linguagem orientada a objetos, então compreender esses conceitos tornará seu desenvolvimento muito mais eficiente. Nesta semana, você aprenderá o que são classes, objetos e como esses conceitos são aplicados no Flutter. Ao final deste bloco, você terá uma base sólida para modelar seus próprios aplicativos de forma organizada e reutilizável.

  • Definindo Programação Orientada a Objetos
    Introdução à POO e sua importância no desenvolvimento de aplicativos em Dart.

  • Definindo Objetos
    Explicação detalhada sobre o que são objetos e como modelá-los no código.

  • Aprofundando no Assunto de Classes e Objetos
    Diferença entre classes e objetos e como essas estruturas se relacionam.

  • Implementando Classes em Dart
    Como definir classes e instanciar objetos na linguagem Dart.

  • Variáveis e Tipos
    Introdução aos tipos de variáveis em Dart e sua importância na POO.

  • Funções e Métodos
    Explicação sobre funções e métodos, como reutilizar código e estruturar melhor seus objetos.

  • Comandos Condicionais
    Como usar estruturas de decisão (if, else) para definir comportamentos diferentes no código.

  • Construtores (▶️ Assista ao Vídeo)
    Introdução aos construtores e como usá-los para inicializar objetos corretamente no Dart.

  • Construtores Nomeados
    Explicação sobre construtores nomeados e como usá-los para criar objetos mais flexíveis.

  • Parâmetros Opcionais
    Como tornar parâmetros opcionais e quando usar parâmetros posicionais ou nomeados em Dart.

  • Praticando no DartPad
    Revisão prática dos conceitos vistos até aqui, testando código diretamente no DartPad.


Tópico 3: Stateful e Stateless Widgets

Neste terceiro módulo, vamos unir os conceitos básicos do Flutter com os fundamentos da Programação Orientada a Objetos em Dart. Você aprenderá a criar widgets personalizados por meio de herança, trabalhar com construtores, parâmetros opcionais e a desenvolver interfaces simplificadas.

  • Introdução ao Módulo
    Conheça a proposta do módulo e como os conceitos de Flutter e Dart se complementam.

  • Introdução à Herança
    Entenda os fundamentos da herança e como ela se aplica aos widgets do Flutter.

  • Criando Widgets com Herança (▶️ Assista ao Vídeo)
    Veja como criar widgets personalizados herdando de StatelessWidget.

  • Introdução aos StatefulWidgets
    Descubra como os StatefulWidgets permitem interfaces dinâmicas.

  • Interfaces Dinâmicas com StatefulWidgets
    Como atualizar a interface com setState para criar interatividade.

  • Incrementando um Contador
    Exemplo prático de atualização dinâmica de um valor na tela.

  • Gerando Frases Inspiradoras
    Veja como exibir frases motivacionais aleatórias para inspirar seu dia.

  • Adicionando Entrada de Texto (TextFormField)
    Aprenda a capturar dados do usuário com um campo de texto.

  • Convertendo Celsius para Fahrenheit
    Um aplicativo de conversão de temperatura para reforçar lógica e conversão numérica.

  • Soma com Dois Campos de Texto
    Exemplo prático de soma utilizando dois campos de entrada.

  • Convertendo Real para Dólar com Slider
    Aprenda a usar o Slider para ajustar valores e converter moeda.

  • Gerando Apelidos Aleatórios
    Um divertido gerador de apelidos a partir do seu nome.


Tópico 4: Widgets Decorativos

Neste módulo, você irá iniciar suas habilidades de estilização e personalização no Flutter. Vamos explorar técnicas visuais como decoração de widgets, sombras, recortes personalizados, animações de estilos e desenhos manuais, concluindo com a criação de um modo escuro para seu aplicativo. Isso lhe ajudará a criar interfaces gráficas agradáveis.

  • Explorando o Widget Container
    Introdução ao Container, um widget essencial para decoração e layout.

  • Estilizando Widgets com BoxDecoration
    Personalize widgets com bordas, cores e gradientes usando BoxDecoration.

  • Criando Sombras e Profundidade
    Destaque elementos visuais com BoxShadow, PhysicalModel e Card.

  • Cortes e Transparências (▶️ Assista ao Vídeo)
    Recorte widgets e aplique transparências com ClipRRect, ClipOval e Opacity.

  • Animações de Estilos com AnimatedContainer
    Crie animações suaves e automáticas de estilos no Flutter.

  • Desenhos Manuais com CustomPaint
    Desenhe formas vetoriais personalizadas com CustomPainter.

  • Implementando Modo Escuro
    Alterne entre temas claro e escuro usando ThemeData e SharedPreferences.


Tópico 5: Responsividade e Adaptabilidade

Neste módulo, você aprenderá como criar aplicativos que oferecem uma experiência consistente e fluida em qualquer dispositivo. Vamos explorar técnicas responsivas e adaptativas, ajustando interfaces para múltiplas telas, orientações e resoluções, com widgets especializados para uma experiência agradável em smartphones, tablets e outros dispositivos.

  • Criando Apps para Múltiplas Telas
    Introdução sobre desafios e estratégias para aplicativos multiplataforma.

  • Introdução ao FlutLab
    Conhecendo FlutLab, ambiente online robusto para projetos maiores com Flutter.

  • Responsivo vs Adaptativo
    Conceitos de design responsivo e adaptativo, quando usar cada abordagem.

  • Layout Adaptativo na Prática
    Como criar layouts específicos para dispositivos diferentes.

  • Informações Dinâmicas com MediaQuery
    Usando MediaQuery para obter informações globais sobre a tela.

  • Ajustando Ícones com Base na Largura
    Alterando dinamicamente tamanhos e espaçamentos conforme largura da tela.

  • Alternando Tela por Orientação
    Adaptando layout especificamente para modo retrato ou paisagem.

  • Definindo Largura e Altura Relativas
    Usando FractionallySizedBox para proporções flexíveis.

  • Redimensionando com FittedBox
    Evitando overflow com ajuste automático de elementos visuais.

  • Distribuindo Espaços com Expanded
    Como organizar layouts e distribuir espaço entre widgets.

  • Quebrando Linhas com Wrap
    Resolva problemas de overflow substituindo Row e Column por Wrap, garantindo que elementos sejam distribuídos automaticamente em múltiplas linhas.


Tópico 6: Gerenciamento de Estado no Flutter

Neste módulo, você aprenderá os fundamentos do gerenciamento de estado no Flutter, desde o uso de callbacks simples até estruturas mais organizadas com o padrão Observer. Exploraremos as ferramentas nativas oferecidas pelo Flutter, como o InheritedWidget, o BuildContext e o Listenable, para conectar múltiplas telas, reagir a eventos e atualizar a interface de forma coerente e escalável, tudo sem o uso de bibliotecas externas. Ao final deste módulo, você terá criado um pequeno projeto com múltiplas telas que compartilham estado.

  • Introdução ao Módulo
    Visão geral do problema que será resolvido nesta semana.

  • Introdução ao Problema de Gerenciamento de Estados
    Por que o gerenciamento de estado é essencial no Flutter?

  • Modelagem dos Dados
    Criando modelos simples para representar o estado da aplicação.

  • Construindo a Tela de Atualização de Rating
    Criação da interface visual de uma das telas do app.

  • Conectando as Telas com Callbacks
    Passando dados entre telas com funções anônimas.

  • Analisando o Aplicativo Criado
    Revisão crítica do projeto e limitações da abordagem inicial.

  • O Padrão Observer
    Implementação manual do padrão Observer no Flutter.

  • BuildContext e Árvore de Widgets
    Entendendo o papel do contexto na hierarquia do Flutter.

  • Usando InheritedWidget
    Compartilhando estado com herança implícita.

  • Eliminando Callbacks da Tela Principal
    Reorganizando o código para eliminar dependências de funções passadas.

  • Eliminando Callbacks da Tela de Detalhes
    Refatoração final da DetailScreen para uso do estado compartilhado.

  • Adicionando Listeners ao Notifier
    Encerrando a construção do app com o Observer totalmente funcional.


Tópico 7: Desenvolvendo um “Jogo da Memória”

Neste último módulo do curso, você vai colocar em prática todo o conhecimento que adquiriu até aqui. A proposta é construir um jogo da memória completo, do zero, utilizando animações, gerenciamento de estado, estruturação em múltiplas classes e integração de widgets com lógica. Você verá, passo a passo, como transformar uma ideia divertida em um aplicativo funcional e visualmente atrativo. Ao final, terá criado um jogo inteiramente seu, e mais importante: entenderá como ele foi construído, podendo criar vários outros jogos seguindo a mesma estrutura!

  • Sumarizando o Curso Uma recapitulação dos principais conceitos aprendidos ao longo do curso e introdução ao projeto final.

  • Criando a Classe do Card
    Modelagem da carta do jogo, com atributos essenciais que guiarão a lógica do jogo.

  • Criando o Tabuleiro com Lógica de Jogo
    Implementando a classe do tabuleiro com a lógica de acerto e erro do jogo da memória.

  • Criando a Classe com ChangeNotifier
    Encapsulando o tabuleiro com ChangeNotifier para reatividade.

  • Criando o InheritedWidget
    Permite acessar e escutar o estado do jogo em toda a árvore de widgets.

  • Criando o Widget de Carta com Animação
    Implementação do widget da carta com animação de “virada”.

  • Montando a Tela com Todos os Cards
    Disposição das cartas em grade adaptável, finalizando o layout do jogo.


De volta ao topo