Loading state | Home Screen |
---|---|
-
lib
— principais camadas e arquivos do app.-
core
— arquivoscore
ou comuns da aplicação, exceções, componentes genéricos e utilitários disponibilizados para todo o app. -
modules
— módulos oufeatures
da aplicação comoauth
,home
ousplash
por exemplo.-
-
core
— camada de domínio dafeature
.entities
— responsável por estruturar osmodelos de dados
principais do app.repositories
— responsável por definir contratos entre a camadadomínio
e a camada dedata
— ajudam a aplicar o princípioDIP
doSOLID
.usecases
— representam a lógica de negócio do app com foco em uma única responsabilidade (dependem da utilização dosrepositories
e chamam seus métodos) — aplicam o princípioSRP
doSOLID
.
-
data
— camada responsável por buscar dados externos seguindo os contratos da camada de domínio.datasources
— implementam as interfaces definidas para osrepositories
na camada de domínio e são responsáveis por prover dados de fontes externas comoAPI's
oudatabases
, onde podem depender de algumadapter
para isso — promovem modularidade e ajudam a aplicar o princípioDIP
doSOLID
.models
— são subclasses das entidades que tratam implementam osJSON Serialization methods
, transformando dados entre entidades de data sources — ajudam a aplicar o princípioOCP
doSOLID
.repositories
— implementam os contratos ou interfaces definidas na camada de domínio, tratando erros e interagindo com osdatasources
para recuperar dados.
-
view
— responsável por apresentar e interpretar informações e ações do usuáriobloc
—BLoc Pattern
, gerencia os estados das telas e suas regras de negócio dependendo dosusecases
para executar operações lógicas.screens
— tela(s) necessárias para a feature que escutam eventos doBLoC
e reagem a suas alterações atualizando aUI
de acordo.widgets
— componentes reutilizáveis entre as telas.
-
-
-
-
app_module.dart
— responsável pela injeção de dependências através doProvider
para disponibilizar dependências a diferentes camadas do app — ajuda a gerenciar as dependências e permite umeasy swapping
de implementações.
SOLID
SRP
— Single Responsibility Principle (Princípio da responsabilidade única);OCP
— Open-Closed Principle (Princípio Aberto-Fechado);LSP
— Liskov Substitution Principle (Princípio da substituição deLiskov
);ISP
— Interface Segregation Principle (Princípio da Segregação da Interface);DIP
— Dependency Inversion Principle (Princípio da inversão da dependência);
BLoC Pattern
- O Bloc Pattern é um padrão de design de software que ajuda a separar a lógica de negócios da apresentação (view) em aplicativos móveis. Ele permite que os desenvolvedores gerenciem eficientemente e convenientemente o estado em seus aplicativos sem um acoplamento rígido entre a apresentação e a lógica. Ele também visa a reutilização da mesma lógica em vários widgets.
$ git clone git@github.com:vagnereix/weather_app_bloc_clean_arch.git
$ cd weather_app_bloc_clean_arch
$ code . # ou abra com sua IDE preferida
# setup your API_KEY from https://openweathermap.org/api
# on lib/core/utils/constants.dart
$ flutter pub get
$ flutter run lib/main.dart # ou utilize sua IDE para iniciar