O projeto foi desenvolvido com Flutter, e inclui packages como shared_preferences, flutter_bloc, get_it e mockito para testes.
Trabalhei em uma empresa de prestação de serviços a qual promovia distribuição e venda de produtos. Nesse contexto, semanalmente havia a prestação de contas do material distribuído, envolvendo cálculos que incluem comissão da empresa, comissão dos colaboradores e impostos, além de variáveis como o preço do produto, que varia semanalmente, material vendido, devolvido e extraviado/danificado. Para facilitar, criei esse aplicativo, oferecendo considerável agilidade, conforto e precisão aos cálculos.
Em sua arquitetura foi implementado o Clean Dart proposto pela Flutterando como implementação da Clean Architecture no Flutter. Apesar de ser um aplicativo simples, foi optado pelo Clean Dart por fins de estudo, além de o aplicativo possuir possibilidade de futura expansão.
O Clean Dart pode ser dividido do seguinte modo:
- Presentation (UI, Flutter, Controllers, State Manager, etc).
- Domain (apenas regras de negócios).
- Entities: regras de negócio da empresa.
- Usecases: regras de negócio da aplicação.
- Interfaces/contratos de Repositories.
- Data
- Implementação de Repositories.
- Tratamento dos dados externos.
- Interfaces/contratos de DataSources.
- External
- Implementação de DataSources.
- Acessos externos que dependem de packages, drivers, APIs, etc.
Além disso, o Clean Architecture propõe o conjunto de princípios conhecido como SOLID.
Para gestão de estado foi adotado o Cubit do package flutter_bloc. A escolha se deu devido à sua simplicidade e agilidade na implementação, evitando o boilerplate gerado pelo BLoC tradicional com a criação de classes para gerenciar eventos, atendendo bem às necessidades do projeto.
A injeção de dependências foi implementada com o package get_it. Escolhido por ser um package simples que atende bem as demandas do aplicativo, contribuindo na implementação do princípio SOLID da inversão de dependências.
- Informe os campos referentes ao material (total em posse, venda, devolução e faltas).
- Informe os campos referentes ao financeiro.
- Informe o preço de venda do material.
- O cálculo é automático assim que todos os campos obrigatórios são informados.
- Há tratamento de erros, sendo eles mostrados ao usuário através de um SnackBar na parte inferior.
Veja o vídeo exemplo a seguir: video from YouTube
- Os campos "Total de Cartelas", "Imposto" e "Ajuda de Custo" são comuns a todas as semanas, sendo por isso salvos no aparelho. O processo de salvamento é mostrado ao usuário por um indicador de progresso, como demonstrado em vídeo.