Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update README.md #11

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
180 changes: 102 additions & 78 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,31 +1,20 @@
# Flutter Roadmap 2025

O objetivo desse repositório é catalogar os conteúdos existentes na internet sobre Flutter e concatenar em uma espécie de "roadmap" para auxiliar os iniciantes.
O objetivo desse repositório é catalogar os conteúdos existentes na internet sobre Flutter e concatenar em uma espécie de roadmap para auxiliar os iniciantes.

# Escrever códigos
# Começando a escrever códigos

É recomendado assistir [ESTE VÍDEO](https://www.youtube.com/watch?v=BTENKdRVS2U) antes de iniciar.

## Lógica de Programação

Precisamos entender como criar algorítmos, por tanto, antes de realmente colocar a mão no código, é importante estudar um pouco sobre Lógica de programação.
Precisamos entender como criar algorítmos, por tanto, antes de realmente colocar a mão no código, é importante estudar um pouco sobre lógica de programação.

Nessa etapa não é necessário saber nenhuma linguagem.

- [Curso de lógica de programação](https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV).
- [Curso Lógica de Programação Completo 2021](https://www.youtube.com/watch?v=iF2MdbrTiBM)
- [Curso de lógica de programação](https://www.youtube.com/watch?v=8mei6uVttho&list=PLHz_AreHm4dmSj0MHol_aoNYCSGFqvfXV);
- [Curso Lógica de Programação Completo 2021](https://www.youtube.com/watch?v=iF2MdbrTiBM).

## Orientação a Objetos (POO)

Esse é o paradgma mais utilizado no Flutter. Por isso devemos conhecer o básico para iniciar nesse framework.

Não tenha medo de aprender 2 ou 3 linguagens a mais para dominar esse paradigma.

É recomendado (~e não obrigatório~) aprender um pouco sobre o Java, pois é uma linguagem que utiliza exclusivamente a POO, forçando-o a entender toda a base desse paradgma.

- [Programação Orientada a Objetos (POO)](https://www.youtube.com/watch?v=QY0Kdg83orY)
- [Curso de programação oriendada a objetos](https://www.youtube.com/watch?v=KlIL63MeyMY&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY)
- [Classes abstratas no FLUTTER](https://youtu.be/nZov6ztrocc)

## O Dart

Expand All @@ -37,65 +26,56 @@ Assista primeiro:

É importante ressaltar que o Dart sofreu mudanças consideráveis na segunda metade de 2021, por tanto, não é recomendado para iniciantes os cursos gravados antes de julho de 2021.

**CURSOS GRATUITOS**:

- [Curso de Dart (Deivid Willyan)](https://www.youtube.com/watch?v=PgRv_aeqf-4&list=PLRpTFz5_57cseSiszvssXO7HKVzOsrI77)

**CURSOS PAGOS**:

- [Lógica de programação com Dart (Flutterando Masterclass)](https://masterclass.flutterando.com.br/public/products/e141c9c5-0b60-4e0e-96f1-e31d433e2a09)
Não pule essa etapa, pois conhecer a base do Dart será o principal diferencial para desenvolver em Flutter.

**DOCUMENTAÇÃO**:

- [Dart doc](https://dart.dev/guides/language/language-tour)

Não pule essa etapa, pois conhecer a base do Dart será o principal diferencial para desenvolver em Flutter.
**CURSOS GRATUITOS**:

# Flutter
- [Curso de Dart (Deivid Willyan)](https://www.youtube.com/watch?v=PgRv_aeqf-4&list=PLRpTFz5_57cseSiszvssXO7HKVzOsrI77)

Após seguir os passos da sessão anterior, chegou a hora de usar as ferramentas do SDK. Se não conhece o Flutter, assista [ESTE VÍDEO](https://www.youtube.com/watch?v=vIP2iLFjEIk&t=66s).
**CURSOS PAGOS**:

## Cursos gratuitos
- [Lógica de programação com Dart (Flutterando Masterclass)](https://masterclass.flutterando.com.br/public/products/e141c9c5-0b60-4e0e-96f1-e31d433e2a09)

- [Flutter Curso 2022 (Flutterando)](https://www.youtube.com/playlist?list=PLlBnICoI-g-fuy5jZiCufhFip1BlBswI7)
- [Catálogo de Widgets](https://docs.flutter.dev/reference/widgets)

## Cursos pagos
## Orientação a Objetos (POO)

- [Masterclass Paga Iniciante (Flutterando)](https://masterclass.flutterando.com.br/public/products)
> ficar atento ao canal do Youtube para ver o anuncio de vagas
Esse é o paradigma mais utilizado no Flutter. Por isso devemos conhecer o básico para iniciar nesse framework.

- [Curso de Flutter (COD3R)](https://www.udemy.com/course/curso-flutter/)
- [Curso de Flutter em Inglês (Angela)](https://www.udemy.com/course/flutter-bootcamp-with-dart/)
- [Curso de Flutter avançado (Paulo)](https://www.udemy.com/course/desenvolvimento-flutter-avancado)
Não tenha medo de aprender 2 ou 3 linguagens a mais para dominar esse paradigma.

## Livros
É recomendado (~e não obrigatório~) aprender um pouco sobre o Java, pois é uma linguagem que utiliza exclusivamente a POO, forçando-o a entender toda a base desse paradgma.

- [Flutter in Action](https://www.google.com/search?q=Flutter+in+Action+book&sca_esv=562513523&rlz=1C1GCEA_enBR1014BR1014&ei=bML1ZPG7LZG75OUPwue7uA0&ved=0ahUKEwjxob_v75CBAxWRHbkGHcLzDtcQ4dUDCBA&uact=5&oq=Flutter+in+Action+book&gs_lp=Egxnd3Mtd2l6LXNlcnAiFkZsdXR0ZXIgaW4gQWN0aW9uIGJvb2syBxAuGBMYgAQyFhAuGBMYgAQYlwUY3AQY3gQY4ATYAQFIsEZQ7jRYiURwAngBkAEAmAHlAaABkQaqAQUwLjQuMbgBA8gBAPgBAcICChAAGEcY1gQYsAPCAgoQABiKBRiwAxhDwgIHEAAYExiABMICCBAAGBYYHhgT4gMEGAAgQYgGAZAGCroGBggBEAEYFA&sclient=gws-wiz-serp&bshm=rimc/1)
- [Flutter Complete Reference](https://www.google.com/search?q=Flutter+Complete+Reference+book&sca_esv=562513523&rlz=1C1GCEA_enBR1014BR1014&ei=g8L1ZMLzDMne5OUPzI-K0AQ&ved=0ahUKEwiCwZr675CBAxVJL7kGHcyHAkoQ4dUDCBA&uact=5&oq=Flutter+Complete+Reference+book&gs_lp=Egxnd3Mtd2l6LXNlcnAiH0ZsdXR0ZXIgQ29tcGxldGUgUmVmZXJlbmNlIGJvb2syBxAAGBMYgAQyBxAuGBMYgAQyBhAAGB4YE0iQBlAAWABwAHgBkAEAmAHSBaAB0gWqAQM2LTG4AQPIAQD4AQL4AQHiAwQYACBBiAYB&sclient=gws-wiz-serp&bshm=rimc/1)
- [Programação Orientada a Objetos (POO)](https://www.youtube.com/watch?v=QY0Kdg83orY)
- [Curso de programação oriendada a objetos](https://www.youtube.com/watch?v=KlIL63MeyMY&list=PLHz_AreHm4dkqe2aR0tQK74m8SFe-aGsY)
- [Classes abstratas no FLUTTER](https://youtu.be/nZov6ztrocc)

# Roadmap

Nesta sessão, iremos sugerir uma sequência de assuntos que um desenvolvedor Flutter deve dominar:
# Flutter

## POO e Lógica de programação
Após seguir os passos da sessão anterior, chegou a hora de usar as ferramentas do SDK. Se não conhece o Flutter, assista [ESTE VÍDEO](https://www.youtube.com/watch?v=vIP2iLFjEIk&t=66s).

O Flutter usa o Dart de forma declarativa. Isso significa que o desenvolvedor usa linguagem de programação para desenhar telas em vez de linguagem de marcação como HTML, XML ou XAML.
Por esse motivo é recomendado que o desenvolvedor já domine os conceitos de POO e Lógica de programação.
EXPLORE o catálogo de widgets; será muito importante conhecer suas principais ferramentas:
- [Catálogo de Widgets](https://docs.flutter.dev/reference/widgets)

Retorne a sessão [Escrever Códigos](#escrever-códigos) para dicas de cursos sobre esses dois assuntos.
**DOCUMENTAÇÃO**:

## Sintaxe do Dart
- [Flutter doc](https://docs.flutter.dev/get-started/learn-flutter)

Antes de usar o Flutter, o desenvolvedor deverá aprender pelomenos a sintaxe básica do Dart.
## Cursos gratuitos

[Nesta sessão](#o-dart) foi sugerido alguns cursos pagos e gratuitos para uma imersão na linguagem Dart.
- [Flutter Curso 2022 (Flutterando)](https://www.youtube.com/playlist?list=PLlBnICoI-g-fuy5jZiCufhFip1BlBswI7)

## Aprenda GIT.
## Cursos pagos

Git é essencial para um desenvolvedor.
- [Masterclass Iniciante (Flutterando)](https://masterclass.flutterando.com.br/public/products)
> ficar atento ao canal do Youtube para ver o anuncio de vagas
- [Curso de Flutter (COD3R)](https://www.udemy.com/course/curso-flutter/)
- [Curso de Flutter em Inglês (Angela)](https://www.udemy.com/course/flutter-bootcamp-with-dart/)

- [Git para desenvolvedores Flutter](https://www.youtube.com/watch?v=Kx3M6XUpcFE)

## Widgets nativos

Expand All @@ -107,31 +87,50 @@ A tela de um aplicativo Flutter é constituida pela união de outros widgets nat
- Entenda o funcionamento do **Container**.
- Teste todos os widgets disponíveis [NESSE CATÁLOGO](https://docs.flutter.dev/reference/widgets).


## Criação de widgets

Existem três formas básicas de criar widgets customizados, o StatelessWidget, StatefulWidget e InheritedWidget. A diferênça entre os três deve ser entendida desde o início.




## Componentização de widget

Após aprender a criar widgets customizados, o desenvolvedor deve aprender a dividir esses widgets em arquivos separados para que possa facilitar a compreenção de outras pessoas que estarão lendo o código posteriomente.
Após aprender a criar widgets customizados, o desenvolvedor deve aprender a dividir esses widgets em arquivos separados para que possa facilitar a compreenção de outras pessoas que estarão lendo o código posteriomente (inclusive ele próprio.

Algumas dicas sobre isso:
Algumas dicas:
- Tente ter um arquivo por Widget.
- Reflita o nome do Widget no nome do arquivo: Ex: HomePage(home_page.dart).
- Reflita o nome do Widget no nome do arquivo, Ex:
- Tela inicial = home_page.dart
- Botao de adicionar tarefa = add_task_button.dart


## Formulários

"TUDO é CRUD."

## Widgets de inputs
Parte da nossa tarefa no front-end é receber dados e enviá-los para a API.

- [AULÃO: Criação de formulários](https://www.youtube.com/watch?v=5SIw8bXiP7o)
- [Tudo sobre Máscaras](https://www.youtube.com/watch?v=sjQLmibDEu4)

## Aprenda a fazer animações

- [Tudo sobre animações no Flutter](https://www.youtube.com/watch?v=XM-8UTkFr4c&t=3108s)
## Consumo de APIs

## Consumo de APIs externas
Consumir informações do mundo externo.
Para montar sua Pokédex, resgatar os dados de um cep...

- [AULÃO: Consumo de APIs (Flutterando)](https://www.youtube.com/watch?v=PUQEd7xRldM)


## Aprenda a fazer animações

Para encantar os clientes! (Principalmente seu chefe)

- [Tudo sobre animações no Flutter](https://www.youtube.com/watch?v=XM-8UTkFr4c&t=3108s)


## Domine o Provider

O Provider é a recomendação da equipe do Flutter para quem está iniciando no mundo Flutter para gerenciar estados e injeção de dependência.
Expand All @@ -144,7 +143,7 @@ O Provider é a recomendação da equipe do Flutter para quem está iniciando no

## Aprenda alguns Design Patterns

Padrões de projetos sÃo importantes para o trabalho em equipe.
Padrões de projetos são importantes para manter a qualidade do código além de facilitar o trabalho em equipe.

- [Repository Pattern no Flutter (balta.io)](https://www.youtube.com/watch?v=Q05t3mgaMfk)
- [CopyWith (Jacob)](https://blog.flutterando.com.br/o-padr%C3%A3o-copywith-no-flutter-dart-267e3d218ffc)
Expand All @@ -154,14 +153,16 @@ Padrões de projetos sÃo importantes para o trabalho em equipe.

## Testes de unidade

Para garantir a qualidade do software e facilitar a manutenção os testes de unidade serão seus maiores aliados.

- [Um programador confiável (Elemar Jr)](https://www.youtube.com/watch?v=XSdT2myLlw4)
- [AULÃO sobre testes de unidade (Flutterando)](https://www.youtube.com/watch?v=BLHPRg8ickY)
- [Semana do Flutter sobre testes (Flutterando)](https://www.youtube.com/playlist?list=PLlBnICoI-g-etEtbvgDnO40SYKOSktCj4)
- [Curso Pago de testes de unidade (Flutterando)](https://masterclass.flutterando.com.br/public/products/94222fd5-92e5-4890-8e87-455ef4346858)

## Gerência de estado

O StatefulWidget concede ao Widget a possibilidade de gerenciar o próprio estado. Mas as vezes é necessário mudar o estado de vários widgets em uma ação. Para isso, existe alguns padrões para auxiliar nisso.
O StatefulWidget concede ao widget a possibilidade de gerenciar o próprio estado, mas às vezes é necessário mudar o estado de vários widgets em uma ação. Para isso, existem alguns padrões que podemos utilizar para facilitar a execução e o entendimento.

- [BASE DA GERENCIA DE ESTADO (Flutterando)](https://www.youtube.com/watch?v=XGjCatQadrk&ab_channel=JacobMouradaFlutterando)
- [AULÃO sobre gerência de estado (Flutterando)](https://www.youtube.com/watch?v=_F0GI2dnt-g)
Expand All @@ -171,9 +172,31 @@ O StatefulWidget concede ao Widget a possibilidade de gerenciar o próprio estad
- [AULÃO sobre MobX (Flutterando)](https://www.youtube.com/watch?v=Z6U6L9e8gmE)
- [AULÃO sobre Triple (Flutterando)](https://www.youtube.com/watch?v=CS97q2PwjSo)


## Aprenda GIT.

Git é essencial para um desenvolvedor. Atualmente, é o meio universal para compartilhamento de código.

- [Git para desenvolvedores Flutter](https://www.youtube.com/watch?v=Kx3M6XUpcFE)


## Gerenciadores de versão

Principais (~e únicos~) gerenciadores de versão do Flutter

- [Link do Puro](https://puro.dev/) | [Video Explicativo](https://www.youtube.com/watch?v=ImCGQM6jhic&t=181s&ab_channel=JacobMouradaFlutterando)
- [Link do FVM](https://fvm.app/) | [Video Explicativo](https://www.youtube.com/watch?v=9n5dLXJMSqU&ab_channel=JacobMouradaFlutterando)

- Qual é melhor?

Atualmente, o approach do Puro com sua configuração de ambientes tem agradado mais à comunidade. Sua instalação acaba sendo mais simples também.


## Se você chegou até aqui, já tem os conhecimentos necessários para construir seus apps, mas agora veremos para onde se aprofundar:

## Arquitetura

A arquitetura de um projeto define a vida útil do mesmo. Todo app tem alguma arquitetura, mesmo que o desenvolvedor não tenha pensado nisso.
A arquitetura de um projeto define sua vida útil. Todo App tem alguma arquitetura, mesmo que o desenvolvedor não tenha pensado nisso.

1. **App Architecture (Recomendada)**
- [Documentação da arquitetura recomendada](https://docs.flutter.dev/app-architecture)
Expand All @@ -184,51 +207,52 @@ A arquitetura de um projeto define a vida útil do mesmo. Todo app tem alguma ar
- [Deixando o Flutter mais intuitivo com o result_dart](https://youtu.be/5kJog_PhGbY)
- [Implementando a NOVA Arquitetura recomendada do Flutter AO VIVO]()

<br>

2. **Conteúdos sobre Clean Architecture:**

- [AULÃO sobre Clean Architecture (Flutterando)](https://www.youtube.com/watch?v=fABLC2fxQwg)
- [Playlist sobre Clean Dart (Flutterando)](https://www.youtube.com/playlist?list=PLlBnICoI-g-d-v_fWlkZX2HRgHHPnJx9s)
- [Masterclass Paga Intermediária (Flutterando)](https://masterclass.flutterando.com.br/public/products)
- [Masterclass Intermediária (Flutterando)](https://masterclass.flutterando.com.br/public/products)
> ficar atento ao canal do Youtube para ver o anuncio de vagas

## Menções honrosas

Principais (~e únicos~) gerenciadores de versão do Flutter

- [Link do Puro](https://puro.dev/) | [Video Explicativo](https://www.youtube.com/watch?v=ImCGQM6jhic&t=181s&ab_channel=JacobMouradaFlutterando)
- [Link do FVM](https://fvm.app/) | [Video Explicativo](https://www.youtube.com/watch?v=9n5dLXJMSqU&ab_channel=JacobMouradaFlutterando)

- Qual é melhor?
Atualmente o aproach de gerencia de armazenamento do Puro e sua configuração de "ambientes" tem agradado mais a comunidade. Sua instalação diretamente no shell simples e direta também.

Link de criadores de conteúdo relevante que estão sempre colaborando ou já tem um acervo de qualidade.
Criadores de conteúdo relevante que estão sempre colaborando ou já tem um acervo de qualidade:

- [Jacob Moura da Flutterando](https://www.youtube.com/@JacobMoura7)
- [Prof. Diego Antunes](https://www.youtube.com/@drantunes)
- [Paulo Mendes](https://www.youtube.com/@paulomendesdev)
- [Flutter Mapp](https://www.youtube.com/@FlutterMapp/videos)
- [Flutter Official](https://www.youtube.com/@flutterdev)

Links gerais da comunidade (discord, telegram...)
Links gerais da comunidade:

- [Linktree](https://link.flutterando.com.br)
- [Youtube](https://www.youtube.com/@FlutterandoTV)
- [Discord](https://discord.flutterando.com.br)
- [Site Oficial](https://flutterando.com.br)

Sugestões de Livros. (Leia para aprender, nunca levando tudo como regra e sim absorvendo as partes que lhe fizerem sentido)

- Clean Code

![image](https://github.com/thKali/roadmap_fork/assets/100535432/48bd94af-05dd-4148-8a2f-41384146e368)

- Padrões de Projeto

![image](https://github.com/thKali/roadmap_fork/assets/100535432/45e1bfcc-090a-41b2-8cf5-d434ec7a4e86)

- Clean Arch

![image](https://github.com/thKali/roadmap_fork/assets/100535432/286b11ae-89e0-4ace-bfe1-fec626bf02fa)

- Padrões de Projeto

![image](https://github.com/thKali/roadmap_fork/assets/100535432/45e1bfcc-090a-41b2-8cf5-d434ec7a4e86)

- Refatoração

![image](https://github.com/thKali/roadmap_fork/assets/100535432/438a86c8-e526-443c-a8c7-66e78109b83f)

- Flutter in Action

![image](https://github.com/user-attachments/assets/88b757f5-2d3e-4ed0-bb28-9b160b8feef6)

- Flutter Complete Reference

![image](https://github.com/user-attachments/assets/6590e38f-4bc1-4dee-a233-6a2e08b86692)