🍍Flutter Leap MVVM
1. Configuração do Ambiente
Depende do Flutter 3.29.2 e Dart 3.7.2 >
Pré-requisitos
Flutter
Dart
Android Studio / Xcode
Emulador ou dispositivo físico para testes
Configuração do Ambiente de Desenvolvimento
Configure um emulador Android ou iOS
Verifique as configurações de PATH para Flutter e Dart
Certifique-se de que as variáveis de ambiente estão configuradas corretamente
Instale o FVM para gerenciar versões do flutter em múltiplos projetos
Instruções de Instalação
Clone o repositório:
git clone https://github.com/loomi/flutter-mvvm-leap.git
Navegue até o diretório do projeto:
cd flutter-mvvm-leap
Instale as dependências:
flutter pub get
Geração de ícones
Vá para o arquivo pubspec e adicione o caminho do seu ícone na seção 'flutter_launcher_icons'
O ícone deve ter 512x512 ou 1024x1024
dart run flutter_launcher_icons ou flutter pub run flutter_launcher_icons
Para iniciar um novo projeto:
substitua o 'com.example.flutterMvvmLeap' em todos os arquivos pelo seu bundleId desejado
em android/app/src/main/kotlin renomeie os nomes das pastas subsequentes com o nome do seu bundle id
em .vscode/ crie launch.json com configurações para executar diferentes flavors mais facilmente
Gerando Arquivo Keystore para Release
Gere um arquivo keystore:
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
Crie o arquivo
android/key.properties
com as seguintes configurações:
storePassword=<keystore_password>
keyPassword=<key_password>
keyAlias=upload
storeFile=<path_to_keystore>/upload-keystore.jks
Usando o validador I18n
execute 'dart run tools/i18n_validator/main.dart' para validar strings usadas em arquivos dart
2. Arquitetura do Projeto
Estrutura de Diretórios
O projeto segue uma estrutura organizada em pastas principais:
lib/core
: Configurações e utilitárioslib/features
: Funcionalidades do apptest
: Testes unitáriostools
: Ferramentas do desenvolvedor
Padrões de Arquitetura Utilizados
O projeto usa a arquitetura MVVM (Model-View-ViewModel).

Fluxo de Dados
Camada de Dados:
Datasources: Responsáveis pela comunicação com fontes externas, como APIs e bancos de dados.
Repositories: Camada de implementação que faz a ponte entre as fontes de dados e a camada de domínio. Eles implementam interfaces definidas na camada de domínio e são responsáveis por manipular dados recebidos de datasources, aplicando transformações ou cache se necessário.
Models: Representação dos dados da aplicação, mapeados de respostas de API ou bancos de dados.
Camada de Domínio:
Entities: Objetos de negócio que representam conceitos fundamentais da aplicação. Eles são mais estáveis e independentes de mudanças de infraestrutura.
Repositories: Definição de interfaces que descrevem as operações de acesso a dados que podem ser realizadas. Elas não contêm lógica de implementação, mas sim contratos que as implementações na camada de dados devem seguir.
Camada de Apresentação:
ViewModels: Gerencia o estado da interface do usuário. Processa eventos da View, acessa repositórios para buscar ou enviar dados, e emite novos estados para a View.
Views: Compostas por telas e componentes visuais que consomem o estado do ViewModel. Elas enviam eventos para o ViewModel em resposta a interações do usuário, como cliques ou entradas de dados.
Gerenciamento de Estado
O projeto usa Bloc/Cubit para implementar o padrão ViewModel do MVVM, mas pode ser adaptado para o gerenciamento desejado.
Cubit: Para estados simples (usado como um ViewModel simplificado)
Bloc: Para estados mais complexos com eventos (usado como um ViewModel mais robusto)
Repository Pattern: Para abstração de fonte de dados
LEITURA RECOMENDADA:
🇦🇹Internacionalização PrópriaLast updated