A base Flutter application using clean architecture and bloc pattern
- Generate splash using flutter_native_splash package:
flutter pub run flutter_native_splash:create
- Generate DB (objectbox), navigation (auto_route), data class (freezed), DI:
flutter packages pub run build_runner watch --delete-conflicting-outputs
- Run above commands to gen files
- Config api:
api_config.dart
- Config database:
database_config.dart
- Config multi flavor like App Name, App Id (Bundle Id):
- Android:
android/app/build.gradle
- iOS:
ios/Flutter/Develop.xcconfig
,ios/Flutter/Staging.xcconfig
andios/Flutter/Production.xcconfig
- Android:
- Config deeplink multi flavor:
- Android:
android/app/src/main/AndroidManifest.xml
andandroid/app/build.gradle
- iOS:
ios/Runner/Runner.entitlements
- For more information, please follow this link
- Android:
- Config FCM multi flavor:
- Integrated for Android only, for iOS please follow this link
- Android:
android/app/src/develop/google-services.json
,android/app/src/staging/google-services.json
andandroid/app/src/production/google-services.json
- iOS:
ios/config/develop/GoogleService-Info.plist
,ios/config/staging/GoogleService-Info.plist
andios/config/production/GoogleService-Info.plist
- Config Fastlane (auto deploy your app to Firebase Distribution):
- Integrated for Android only, for iOS please follow this link
- Fill the release notes to
change_log.txt
- Android:
android/fastlane/Appfile
andandroid/fastlane/Fastfile
- iOS:
ios/fastlane/Appfile
andios/fastlane/Fastfile
- Config build release Firebase Distribution:
- Integrated for Android only
- Android:
- Create new folder named
distribution
in folderandroid
- Create new keystores file (
.jks
) in folder:android/distribution
- Create new properties file named
keystore.properties
in folderandroid/distribution
- Fill your keystores information to the
keystore.properties
file:
- Create new folder named
storeFile=../distribution/[YOUR_KEYSTORES_FILE_NAME]
storePassword=[YOUR_KEYSTORES_STORE_PASSWORD]
keyAlias=[YOUR_KEYSTORES_KEY_ALIAS]
keyPassword=[YOUR_KEYSTORES_KEY_PASSWORD]
- Command build release:
- Integrated for Android only
- Android:
cd
to folderandroid
- Run commands:
- build Develop Release:
bundle exec fastlane distributeDevelop
- build Staging Release:
bundle exec fastlane distributeStaging
- build Production Release:
bundle exec fastlane distributeProduction
- build Develop Release:
- DI: get_it, injectable
- data class: freezed
- navigation: auto_route
- deeplink: uni_links
- DB: objectbox (can be replaced by floor / moor / hive)
- Network API: dio
- Pattern: Bloc + RxDart
- Push notification: firebase_messaging, flutter_local_notifications
- Fastlane