EcoTrack é um aplicativo focado em fomentar o turismo pelo meio ambiente! Nele, os usuários podem fotografar suas aventuras, que serão associadas a sua geolocalização para que os outros usuários possam conhecer. Além disso, EcoTrack é um aplicativo White Label, ou seja, customizável para possíveis compradores.
O EcoTrack é implementado para ser executado em dispositivos Android e iOS. Porém, a falta de um MacOS para o desenvolvimento do app impossibilitou a build para iOS, uma vez que os arquivos gerados ao rodar o app no iOS, como o Podfile, precisam de alterações ao implementar as permissões, por exemplo.
No entanto, a build para iOS necessita de poucos ajustes ao rodar o app por um MacOS.
Independentemente, recomenda-se rodar o app em um dispositivo Android.
O app EcoTrack foi desenvolvido com a versão 3.22.2 do Flutter.
Dentre padrões de projeto e bibliotecas utilizadas, destacam-se:
- Padrões de projeto: Clean Architecture e BLoC;
- Navegação com GoRouter;
- Injeção de dependências com Riverpod;
- Consumo de API com Firebase;
- Unit Tests com Mockito;
- App White Label.
A principal função para configuração o app como white label é o dependency_overrides do pubspec.yaml.
A organização do projeto é a seguinte:
- Na raiz do repositório, cria-se um projeto base (
eco_track_whitelabel) e o(s) projeto(s) que o sobrescreve(m) (cachoeira_ferreira); - Em todos os projetos, deve-se criar um diretório
commonna raiz, onde ficará tudo o que deve ser sobrescrito; - No
pubspec.yamldos projetos que sobrescrevem, adicionamos umadependency_overridesque aponta para o caminho do diretóriocommone umadependencypara o projeto base; - No arquivo
main.dartdos repositórios que sobrescrevem, apontamos a funçãomainpara amaindo projeto base; - A partir disso, tudo o que estiver no diretório
commondo projeto base deve também deve estar nocommondos outros projetos, podendo ser customizado.
Essa organização de projeto permite customização de temas e de widgets, porém, nesse exemplo foram sobrescritos apenas cores, assets e textStyles.
A Clean Architecture, design pattern criado pelo Uncle Bob, permite a separação da lógica de negócios com a aplicação.
Na raiz do projeto, cria-se um package domain. Esse package independe de frameworks e é utilizado apenas para a lógica de negócios. Nele, cria-se os casos de uso, ou use cases, que ditam as funcionalidades principais do aplicativo.
Os use cases se comunicam com os data sources (classes que interagem com APIs, cache, memória, etc) através de repositories, e são os casos de uso que são chamados no BLoC.
O BLoC é um padrão de projeto de gerenciamento de estado. Pode ser implementado livre de bibliotecas ou através da lib BLoC.
Essa biblioteca abstrai as sinks e streams da programação reativa através de events e states, permitindo a atualização dos widgets ao disparar um evento, que emitirá um novo estado.
Para rodar o app base (EcoTrack), basta acessar o diretório eco_track_whitelabel e rodar o comando:
flutter run
Para rodar o app "do cliente", basta acessar o diretório cachoeira_ferreira e rodar o comando:
flutter run
Ou então configurar a IDE de preferência para rodar a partir desses diretórios. Recomenda-se a versão 3.22.2 do Flutter.
O app EcoTrack foi desenvolvido atentando-se por diretrizes e políticas da PlayStore e AppStore, como por exemplo:
- Os pedidos de permissões no app (localização e camera) possuem dialogs prévios esclarecendo a necessidade do acesso a essas funcionalidades;
- O app utiliza as versões mais recentes da API dos sistemas operacionais, dada a restrição à versões antigas.