Flutter base project menggunakan:
- Clean Architecture
- BLoC
- Dio
- GoRouter
- GetIt + Injectable
- Freezed & Json Serializable
- Flavor & Environment Configuration
lib/
│
├── app/
│ ├── router/
│ └── theme/
│
├── core/
│ ├── config/
│ ├── network/
│ ├── error/
│ ├── storage/
│ └── utils/
│
├── features/
│ └── feature_name/
│ ├── data/
│ ├── domain/
│ └── presentation/
│
├── injection/
│
├── bootstrap.dart
├── main_dev.dart
├── main_staging.dart
└── main_prod.dart
Project menggunakan Feature First Clean Architecture.
Bertanggung jawab untuk:
- API Call
- Local Storage
- Model Mapping
Berisi:
- Entity
- Repository Contract
- Use Case
Berisi:
- UI
- BLoC
- Navigation
Project mendukung 3 environment:
.env.dev
.env.staging
.env.prod
Contoh:
APP_NAME=Eder Dev
BASE_URL=https://api-dev.example.comJalankan setelah membuat:
- Freezed Model
- Json Serializable Model
- Injectable Registration
dart run build_runner build --delete-conflicting-outputsWatch mode:
dart run build_runner watch --delete-conflicting-outputsflutter pub getflutter run --flavor dev -t lib/main_dev.dartflutter run --flavor staging -t lib/main_staging.dartflutter run --flavor prod -t lib/main_production.dartflutter build apk --flavor dev -t lib/main_dev.dartflutter build apk --flavor staging -t lib/main_staging.dartflutter build apk --flavor prod -t lib/main_prod.dartflutter build appbundle --flavor prod -t lib/main_prod.dart- Create Feature
- Create Data Layer
- Create Domain Layer
- Create Presentation Layer
- Register Dependency
- Generate Code
- Add Route
- Implement UI
- Jangan commit file
.env - Simpan credential dan URL API di environment file
- Semua dependency harus diregistrasikan melalui GetIt + Injectable
- Gunakan feature-based structure untuk setiap module baru