- 📖 Sobre
- 📱 Preview
- 📦 Assets
- 🛠️ Funcionalidades e Tecnologias Estudadas
- 🤯 Desafios e Aprendizados ao longo do caminho
- 🤔 Como usar
- 💪 Como contribuir
- 📝 Licença
Projeto desenvolvido na Dart Week | 9ª Edição, um evento de lançamento para a Academia do Flutter (ADF), do Rodrigo Rahman.
Nesse tempo de Pré-Acesso que obtive por ser um aluno da ADF (desde Fevereiro/2022), consegui entender com mais facilidade certos conceitos que ainda estavam confusos para mim, como a parte do BLoC.
Também, aprendi a base dos testes com o mesmo (este por conta própria, como forma de me desafiar a buscar mais conhecimento). Contei também com a ajuda da comunidade, que prontamente nos ajuda a trilhar o melhor caminho.
- UI Design criado para o evento: Vakinha Burger
- Consulta da API usando o package Dio
- BLoC como Gerenciamento de Estado
- Fluxo de Login e Logout com a aplicação
- Persistência de dados com o SharedPreferences
- Pattern Matching com match
- Extensions
- Slivers
- RefreshToken (módulo extra)
- Providers
- Mixins
- Singleton
- Teste de BLoC
- Telas:
- Splash (tela inicial do app para transição)
- Home (tela principal do app, lista todos os produtos disponíveis e que serve de fluxo inicial para as demais telas descritas abaixo)
- Login (onde possui o fluxo de login)
- Register (onde possui o fluxo de cadastro)
- ProductDetail (detalhe da página do produto, onde temos mais componentes descritivos a respeito do produto)
- Order (onde podemos escolher a forma de pagamento e finalizar nosso pedido)
Como esse foi um "remake" de um Dart Week que já ocorreu (Vakinha Burger 6ª Edição com GetX), obtive um maior aproveitamento de código. Posso dizer com clareza que aprendi muito com o uso de um package para pattern matching, o match. O BLoC combinado com esse package e o ensinamento do Rodrigo Rahman, fica extremamente mais simples e divertido de enteder e desenvolver.
Aprendi também como começar os testes com bloc, algo que eu há tempos marquei para estudar, e finalmente consegui a introdução dos mesmos nesse DW, me desafiando (inclusivei irei incrementá-los).
Por mais que estes demoraram um tempo até eu entender o que de fato estava ocorrendo e o porquê não estavam passando à priori, foi extremamente satisfatório poder ler "2/2 tests passed(100%)".
Espero estar sempre aprendendo novas tecnologias com o Rahman e a comunidade incrivel de Flutter!
É necessário ter o Flutter instalado. Para configurar o ambiente de desenvolvimento na sua máquina:
https://flutter.dev/docs/get-started/install
O aplicativo consome os dados do backend desenvolvido pela comunidade ADF chamado json_rest_server:
https://pub.dev/packages/json_rest_server
- Clone o repositório:
$ git clone https://github.com/GabrielCR99/dw9_vakinha_burger_bloc dw9_vakinhar_burger_bloc
- Entre no diretório:
$ cd dw9_vakinhar_burger_bloc
- Instale as dependências:
$ flutter pub get
- Instale o json_rest_server
$ dart pub global activate json_rest_server
- Crie um diretório do backend utilizando o json_rest_server
$ json_rest_server create .\backend
- Entre no diretório:
$ cd backend
- Para inicializá-lo, execute o comando:
$ jrs run
- Em outro terminal, no diretório raiz do projeto, execute:
$ flutter run
- Gosto bastante de seguir a seguinte Style Guide de Commits 😊:
https://udacity.github.io/git-styleguide/
- Dê um fork no projeto
- Cria uma nova branch com suas mudanças:
$ git checkout -b my-feature
- Salve suas mudanças e faça uma mensagem de commit message sobre suas alterações:
$ git commit -m "feat: My new feature"
- Envie suas mudanças:
$ git push origin my-feature
Esse repositório está sobre a Licença MIT, e você pode vê-la no arquivo LICENSE para mais detalhes. 😉
Esse projeto foi desenvolvido com ❤️ por @Gabriel Roveri, com o instrutor @Rodrigo Rahman, no evento #DartWeek da Academia do Flutter.
Se isso te ajudou, dê uma ⭐, e contribua, isso irá me ajudar também 😉