- Sobre o projeto
- Design da aplicação
- Arquitetura
- Features e diagramas
- Testes
- Próximos passos e melhorias que podem ser feitas
Pokedex é um aplicativo no qual o usuário pode consultar os pokemons e adquirir informações relevantes sobre eles. Além disso, é possível favoritar os pokemons afim de acessá-los de forma mais rápida, inclusive quando você estiver offline! Nele você também poderá montar seu time dos sonhos com os seus 6 melhores pokemons!
Este aplicativo foi feito utilizando como base os dados da API do pokeapi que possui um catálogo com todas as informações do universo dos pokemons.
O código foi criado com base nos principios de Clean Architecture propostos pelo livro Clean Architecture de Robert C. Martin e nos videos de arquitetura limpa do canal de Deivid Willyan | Flutter. Os conceitos aplicados buscam como objetivo garantir um código com baixo acoplamento e alta coesão para facilitar a manutenabilidade e testabilidade do software.
Nesta sessão é possível ver quais as funcionalidades da pokedex e alguns diagramas BPNM que exemplificam como elas funcionam.
1 - Listar pokemons: por padrão a pokedex exibe 20 pokemons e conforme o scroll é realizado ele vai carregando mais pokemons.
2 - Ver detalhes de um pokemon e obter: Informações básicas, habilidades e movimentos, bem como saber suas vantagens e fraquezas em relação a outros tipos de pokemon.
3 - Marcar/Desmarcar um pokemon como favorito.
4 - Listagem de pokemons favoritos.
5 - Adicionar/remover pokemon do "my team".
6 - Exibir time pokemon.
7 - Pesquisar um pokemon pelo seu nome.
Para obter uma maior segurança em relação ao que foi desenvolvido essa aplicação conta com dois tipos de testes: testes de unidade e testes de integração. Abaixo temos uma imagem que mostra a cobertura atual de testes do aplicativo.
Para rodar os testes basta ter o projeto clonado em seu computador e executar os seguintes comandos no terminal dentro da estrutura de pastas do projeto:
Testes de unidade:
flutter test
Testes de integração:
flutter test integration_test/app_test.dart
Por conta do tempo, algumas funcionalidades ainda não contemplam com profundidade todos os cenários que eu gostaria. Alguns pontos para serem melhorados:
Entender melhor o mapeamento dos dados para saber se realmente todos os dados da API podem vir nulos em algum momento.
Tratar melhor os erros da aplicação e reproduzi-los de uma forma mais coerente na interface do usuário.
Criar um objeto responsável por identificar se o aparelho do usuário consegue se comunicar com algum host externo e tratar possíveis problemas de conexão com a internet.
Uma solução para melhorar o armazenamento de dados poderia ser integrar os dados com o firebase. Dessa forma o usuário poderia ter seus dados mesmo offiline e/ou acessando outros dispositivos.
Uma outra questão interessante seria implementar um sistema para monitoramento de logs do sistema que poderia ser usada para entender melhor possíveis erros que a aplicação pode ter ou ate mesmo usados para auditoria.
Apesar da grande maioria dos cenários terem sido testados, acredito que atingiria a uma cobertura de 100% nos testes de unidade, e cobriria mais alguns casos nos testes de integração que não foram realizados.











