Flutter Architecture Blueprints is a project that introduces MVVM architecture and project structure approaches to developing Flutter apps.
iOS
Android
If added some assets or fonts
If added some models for api results
If added some localizations (i.g. edited *.arb)
Working status | Category | Description | Codes |
---|---|---|---|
✅ | Dart | Dart version | pubspec.yaml |
✅ | Dart | Switching between Development and Production environment | constants.dart, runConfigurations, Makefile |
✅ | Dart | Lint / Analyze | analysis_options.yaml |
✅ | Android | Kotlin version | build.gradle |
✅ | Android | Apk attributes | build.gradle (compileSdkVersion, applicationId, minSdkVersion, targetSdkVersion) |
✅ | Android | Switching between Development and Production environment | build.gradle, Flavor dirs, signingConfigs |
✅ | iOS | Xcode version | compatibilityVersion |
✅ | iOS | Podfile | Podfile |
✅ | iOS | Switching between Development and Production environment | xcconfig, Podfile |
✅ | Firebase | [Android] Switching between Development and Production google-service.json using flavors | development and production |
✅ | Firebase | [iOS] Switching between Development and Production GoogleService-Info.plist using run script | copy_google_service.sh, development and production |
✅ | Firebase Auth | SignIn, SignOut | auth_data_source_impl.dart |
✅ | Firebase Crashlytics | Crash Reports | main.dart |
✅ | Firebase Performance | Network monitoring with dio_firebase_performance | app_dio.dart |
Working status | Category | Description | Codes |
---|---|---|---|
✅ | Base | Using Riverpod + Hooks + ChangeNotifier + MVVM | home_page.dart, home_view_model.dart, news_repository.dart, news_data_source.dart |
✅ | Networking | Using dio | app_dio.dart, news_data_source_impl.dart |
✅ | Caching | Using dio_http_cache | app_dio.dart, news_data_source_impl.dart |
✅ | Data | Using Freezed | model classes |
✅ | Persist Data | Using shared_preferences | theme_data_source_impl.dart |
✅ | Constants | Define constants and route names | constants.dart |
✅ | Localization | Switching between two languages with Intl package | *.arb |
✅ | Error handling | Using Result pattern - A value that represents either a success or a failure, including an associated value in each case. | result.dart, news_repository_impl.dart, home_page.dart |
Working status | Category | Description | Codes |
---|---|---|---|
✅ | Theme | Dynamically Switch between light and dark themes | app_theme.dart |
✅ | Font | Using Google font | app_theme.dart |
✅ | Transition | Simple animation between screens using Hero | article_item.dart, detail_page.dart |
Working status | Category | Description | Codes |
---|---|---|---|
✅ | API(Repositories) | Using Mockito | view_mode_test.dart, app_theme_test.dart |
✅️ | UI | Using Mockito | widget_test.dart |
✅ | Coverage reports | Send the report to Codecov on CI | codecov.yml, codecov.sh, flutte-ci.yml |
Working status | Category | Description | Codes |
---|---|---|---|
✅ | Git | Git hooks for format and analyze | package.json, Makefile |
✅ | Git | .gitignore settings | .gitignore |
✅ | Build | Using Codemagic | codemagic.yaml |
✅ | Build | Using Bitrise | bitrise.yml |
✅ | Build | Using Github Actions | .github/workflows/flutter-ci.yml |
$ make setup
$ make build-runner
Android
$ make build-android-dev
$ make build-android-prd
iOS
$ make build-ios-dev
$ make build-ios-prd
$ make run-dev
$ make run-prd
flutter pub get
Contributors
Author: huskyjp
Source Code: https://github.com/huskyjp/flutter-mvvp-riverpod-architecture
#flutter #dart #mobile-apps