Flutter Architecture Blueprints
Flutter Architecture Blueprints is a project that introduces MVVM architecture and project structure approaches to developing Flutter apps.
Documentation
Requirements
Environment
iOS
- iOS 13+
- compatibilityVersion "Xcode 9.3"
Android
- Android 5.1+
- minSdkVersion 22
- targetSdkVersion 30
Code collections
Project settings
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 |
Architecture
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 | news_data_source_impl.dart | |
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 | message.dart, context.localized, *.arb, message_(en|ja).dart | |
Error handling | Using ChangeNotifier | change_notifier_with_error_handle.dart, error_notifier.dart, home_view_model.dart |
UI
Working status | Category | Description | Codes |
---|---|---|---|
Theme | Dynamically Switch between light and dark themes | app_theme.dart, app.dart | |
Font | Using Google font | app_theme.dart | |
Transition | Simple animation between screens using Hero | article_item.dart, detail_page.dart |
Testing
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 |
CI
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 |
Getting Started
Setup
$ make setup
$ make build-runner
Make .apk and .ipa file
Android
$ make build-android-dev
$ make build-android-prd
iOS
$ make build-ios-dev
$ make build-ios-prd
Run app
$ make run-dev
$ make run-prd
Special Thanks.
Contributors