clean_architecture_with_state_management
A Dart package for clean architecture with state management.
Overview
This Dart package provides a clean architecture template with state management.
Features
- Separation of concerns with clean architecture principles.
- State management integration for a smooth user interface.
- Easily customizable and extendable.
Getting Started
Installation
Add the following dependency to your pubspec.yaml
file:
dev_dependencies:
clean_architecture_with_state_management:
Usage
Basic usage example:
dart run clean_architecture_with_state_management yourFeatureName
Folder Structure
|- features
| ┌ feature_name/
| |- data/
| | |-data_sources/
| | | |- local/
| | | | └ feature_name_local_data_source.dart
| | | └ remote/
| | | └ feature_name_remote_data_source.dart
| | |- models/
| | | └ feature_model.dart
| | └ repositories/
| | └ feature_name_repository_impl.dart
| |- domain/
| | |- entities/
| | | └ feature.dart
| | |- repositories/
| | | └ feature_repository.dart
| | └ use_case/
| | └ feature_use_case.dart
| |- presentation/
| | |- widgets/
| | └ screens/
| | └ feature_screen.dart
| └ inject_feature_name.dart
Create architecture with provider
state management:
dart run clean_architecture_with_state_management yourFeatureName -provider
Folder Structure
|- features
| ┌ feature_name/
| |- data/
| | |-data_sources/
| | | |- local/
| | | | └ feature_name_local_data_source.dart
| | | └ remote/
| | | └ feature_name_remote_data_source.dart
| | |- models/
| | | └ feature_model.dart
| | └ repositories/
| | └ feature_name_repository_impl.dart
| |- domain/
| | |- entities/
| | | └ feature.dart
| | |- repositories/
| | | └ feature_repository.dart
| | └ use_case/
| | └ feature_use_case.dart
| |- presentation/
| | |- provider/
| | | └ feature_provider.dart
| | |- widgets/
| | └ screens/
| | └ feature_screen.dart
| └ inject_feature_name.dart
Create architecture with bloc
state management:
bloc
dart run clean_architecture_with_state_management yourFeatureName -bloc
Folder Structure
|- features
| ┌ feature_name/
| |- data/
| | |-data_sources/
| | | |- local/
| | | | └ feature_name_local_data_source.dart
| | | └ remote/
| | | └ feature_name_remote_data_source.dart
| | |- models/
| | | └ feature_model.dart
| | └ repositories/
| | └ feature_name_repository_impl.dart
| |- domain/
| | |- entities/
| | | └ feature.dart
| | |- repositories/
| | | └ feature_repository.dart
| | └ use_case/
| | └ feature_use_case.dart
| |- presentation/
| | |- bloc/
| | | └ feature_bloc.dart
| | | └ feature_event.dart
| | | └ feature_state.dart
| | |- widgets/
| | └ screens/
| | └ feature_screen.dart
| └ inject_feature_name.dart
Create architecture with cubit
state management:
cubit
dart run clean_architecture_with_state_management yourFeatureName -cubit
Folder Structure
|- features
| ┌ feature_name/
| |- data/
| | |-data_sources/
| | | |- local/
| | | | └ feature_name_local_data_source.dart
| | | └ remote/
| | | └ feature_name_remote_data_source.dart
| | |- models/
| | | └ feature_model.dart
| | └ repositories/
| | └ feature_name_repository_impl.dart
| |- domain/
| | |- entities/
| | | └ feature.dart
| | |- repositories/
| | | └ feature_repository.dart
| | └ use_case/
| | └ feature_use_case.dart
| |- presentation/
| | |- cubit/
| | | └ feature_cubit.dart
| | | └ feature_state.dart
| | |- widgets/
| | └ screens/
| | └ feature_screen.dart
| └ inject_feature_name.dart
Create architecture with riverpod
state management:
riverpod
dart run clean_architecture_with_state_management yourFeatureName -riverpod
Folder Structure
|- features
| ┌ feature_name/
| |- data/
| | |-data_sources/
| | | |- local/
| | | | └ feature_name_local_data_source.dart
| | | └ remote/
| | | └ feature_name_remote_data_source.dart
| | |- models/
| | | └ feature_model.dart
| | └ repositories/
| | └ feature_name_repository_impl.dart
| |- domain/
| | |- entities/
| | | └ feature.dart
| | |- repositories/
| | | └ feature_repository.dart
| | └ use_case/
| | └ feature_use_case.dart
| |- presentation/
| | |- riverpod/
| | | └ feature_.dart
| | └ feature_provider.dart
| | |- widgets/
| | └ screens/
| | └ feature_screen.dart
| └ inject_feature_name.dart