🍍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

  1. Clone o repositório:

git clone https://github.com/loomi/flutter-mvvm-leap.git
  1. Navegue até o diretório do projeto:

cd flutter-mvvm-leap
  1. 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

  1. Gere um arquivo keystore:

keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  1. 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ários

  • lib/features: Funcionalidades do app

  • test: Testes unitários

  • tools: Ferramentas do desenvolvedor

Padrões de Arquitetura Utilizados

O projeto usa a arquitetura MVVM (Model-View-ViewModel).

Fluxo de Dados

  1. 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.

  2. 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.

  3. 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ópria

Last updated