Finances – Descrição Técnica
O propósito deste projeto é criar um aplicativo que auxilie os usuários no controle de seu orçamento. Ele permite a criação e gerenciamento de contas, o acompanhamento dos movimentos financeiros organizados em categorias personalizadas e a elaboração e execução de orçamentos. Este projeto foi inspirado no diagrama disponível no Figma, Financy-App, e inicialmente desenvolvido com base nos vídeos do canal do YouTube @devkaio. Sou imensamente grato por suas orientações em práticas recomendadas e ideias que contribuíram para a implementação deste projeto.
Desenvolvimento do Código
Este projeto tem como objetivo aprimorar meus conhecimentos no SDK Flutter e em todo o ecossistema envolvido no desenvolvimento do aplicativo.
No geral, o projeto está sendo desenvolvido seguindo uma arquitetura baseada em funcionalidades, na qual os componentes e módulos relacionados a uma determinada funcionalidade são agrupados de forma lógica, facilitando a compreensão e a manutenção do projeto.
As páginas são construídas usando uma abordagem de gerenciamento de estado e arquitetura MVC (Model-View-Controller) simplificada, adaptada para Flutter.
Sua implantação ocorre em três módulos:
- módulo_state.dart: define estados para gerenciamento de estado do componente, permitindo uma representação clara dos diferentes estados (inicial, carregando, sucesso, erro) durante operações assíncronas, como carregar saldos.
- módulo_controller.dart: atua como o “Controller” no padrão MVC, gerenciando a lógica de negócios, como buscar saldos de contas e manter o estado atual. Um ChangeNotifier é empregado para notificar ouvintes sobre mudanças de estado, facilitando a reatividade do app.
- módulo_page.dart: representa a “View” no padrão MVC, onde a UI reage às mudanças de estado gerenciadas pelo controller. Um AnimatedBuilder é usado para reconstruir a UI baseada no estado atual do controller, permitindo transições suaves entre estados de carregamento, sucesso e erro.
Outras diversas funcionalidades são implementadas por meio de pacotes. A seguir descrevo alguns destes pacotes com as funcionalidades mais relevantes no projeto Finances:
get_it
O Service Locator utilizado é o get_it, que oferece uma maneira de centralizar e obter instâncias de serviços necessários em todo o aplicativo. Ele também é capaz de gerar objetos Singleton e sob demanda, proporcionando flexibilidade na distribuição e controle dos recursos.
firebase_auth e firebase_core
O gerenciamento de usuários é feita através do firebase_auth para promover segurança da conta. Embora os dados sejam mantidos localmente por meio de banco de dados sqlite, a autenticação pelo firebase adiciona uma camada de proteção para os usuários.
sqflite
SqDLite é um pacote para Flutter que implementa o SQLite com suporte para iOS, Android e MacOS. Todas as informações do usuário e suas movimentações são mantidas localmente, no dispositivo do cliente, em um banco de dados SQLite.
flutter_localization e intl
O Flutter Localization é um pacote inspirado no SDK Flutter flutter_localizations, usado para integrar mapas de localização no aplicativo, de forma simples e fácil para implementar. Com este foram implementadas o suporte aos idiomas: inglês, português, italiano, francês e alemão.
O pacote intl é empregado para fornece recursos de internacionalização e localização na formatação e análise de data e números.
ofx, url_launcher e xml2json
Uma versão customizada do pacote ofx é empregado para ler arquivos OFX (Open Financial Exchange) de instituições financeiras. Esta customização foi necessário pois estes arquivos OFX, distribuídos pelas instituições financeiras, nem sempre são XMLs bem formatados, o que geram erros na leitura. Isto me levou a fazer algumas alterações no pacote, adicionando mecanismos de correção para aumentar a capacidade de leitura do pacote.
Estou para entrar em contato com o FranciscoValerio, assim que tiver uma visão mais clara das alterações necessárias para deixar o pacote mais abrangente.
Deixe uma resposta