[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-9317":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":16,"stars30d":17,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":21,"defaultBranch":22,"hasWiki":21,"hasPages":21,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},9317,"flutter-architecture-blueprints","wasabeef\u002Fflutter-architecture-blueprints","wasabeef","Flutter Architecture Blueprints is a project that introduces MVVM architecture and project structure approaches to developing Flutter apps.","",null,"Dart",1668,252,1669,13,0,1,55.31,"MIT License",true,false,"main",[24,25,26,27,28],"android-studio","architecture","dart","flutter","xcode","2026-06-12 04:00:44","# Flutter Architecture Blueprints\n\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fart\u002Fraw\u002Fmaster\u002Fflutter-architecture-blueprints\u002Fcover.png\" \u002F>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fapp.bitrise.io\u002Fapp\u002Fbc96b48850888851\">\n    \u003Cimg src=\"https:\u002F\u002Fapp.bitrise.io\u002Fapp\u002Fbc96b48850888851\u002Fstatus.svg?token=kpOAmHRna6NiMkHYsosrlA\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcodemagic.io\u002Fapps\u002F5f2fd2f0cfa9364ecb48c64e\u002F5f2fd2f0cfa9364ecb48c64d\u002Flatest_build\">\n    \u003Cimg src=\"https:\u002F\u002Fapi.codemagic.io\u002Fapps\u002F5f2fd2f0cfa9364ecb48c64e\u002F5f2fd2f0cfa9364ecb48c64d\u002Fstatus_badge.svg\">\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Factions?query=workflow%3A%22Flutter+CI%22\">\n    \u003Cimg src=\"https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fworkflows\u002FFlutter%20CI\u002Fbadge.svg?branch=master\" \u002F>\n  \u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Fwasabeef\u002Fflutter-architecture-blueprints\">\n    \u003Cimg src=\"https:\u002F\u002Fcodecov.io\u002Fgh\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fbranch\u002Fmain\u002Fgraph\u002Fbadge.svg?token=9NCYY33KNG\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fwasabeef_jp\">\n    \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Ftwitter\u002Ffollow\u002Fwasabeef_jp?label=%40wasabeef_jp&logoColor=000000&style=social\" \u002F>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\nFlutter Architecture Blueprints is a project that introduces MVVM architecture and project structure approaches to developing Flutter apps.\n\n## Documentation\n\n- [Install Flutter](https:\u002F\u002Fflutter.dev\u002Fget-started\u002F)\n- [Flutter documentation](https:\u002F\u002Fflutter.dev\u002Fdocs)\n- [Contributing to Flutter](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002FCONTRIBUTING.md)\n\n## Installation\n\n- [asdf](https:\u002F\u002Fgithub.com\u002Fasdf-vm\u002Fasdf)\n  - Dart 2.14.4\n  - Flutter 2.5.3\n- [npm (for git hooks)](https:\u002F\u002Ftreehouse.github.io\u002Finstallation-guides\u002Fmac\u002Fnode-mac.html)\n\n## Environment\n\n\u003Cimg height=\"520px\" src=\"https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fart\u002Fraw\u002Fmaster\u002Fflutter-architecture-blueprints\u002FMVVM.jpg\" align=\"right\" \u002F>\n\n**iOS**\n- iOS 13+\n\n**Android**\n- Android 5.1+\n    - minSdkVersion 22\n- targetSdkVersion 30\n\n## App architecture\n- Base on [MVVM](https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FModel%E2%80%93view%E2%80%93viewmodel) + [Repository](https:\u002F\u002Fdocs.microsoft.com\u002Fja-jp\u002Fdotnet\u002Farchitecture\u002Fmicroservices\u002Fmicroservice-ddd-cqrs-patterns\u002Finfrastructure-persistence-layer-design)\n\n## Code Style\n- [flutter_lints](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_lints)\n\n## Assets, Fonts\n\n**If added some assets or fonts**\n\n- Use [FlutterGen](https:\u002F\u002Fgithub.com\u002FFlutterGen\u002Fflutter_gen\u002F)\n\n## Models\n\n**If added some models for api results**\n\n- Use [Freezed](https:\u002F\u002Fpub.dev\u002Fpackages\u002Ffreezed)\n\n## Localizations\n\n**If added some localizations (i.g. edited [*.arb](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Flib\u002Fl10n))**\n\n- Use [Official Flutter localization package](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc)\n\n## Git Commit message style\n\n- [Semantic Commit Messages](https:\u002F\u002Fgist.github.com\u002Fjoshbuchea\u002F6f47e86d2510bce28f8e7f42ae84c716)\n\n## Code collections\n\n#### Project settings\n|Working status|Category|Description|Codes|\n|:---:|---|---|---|\n| ✅ | Dart | Dart version | [pubspec.yaml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fpubspec.yaml#L7-L9) |\n| ✅ | [asdf](https:\u002F\u002Fgithub.com\u002Fasdf-vm\u002Fasdf) | asdf | [.tool-versions](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002F.tool-versions) |\n| ✅ | Dart | Switching between Development and Production environment | [constants.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Ffoundation\u002Fconstants.dart), [runConfigurations](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002F.idea\u002FrunConfigurations), [Makefile](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002FMakefile#L25-L41) |\n| ✅ | Dart | Lint \u002F Analyze | [analysis_options.yaml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fanalysis_options.yaml) |\n| ✅ | Android | Kotlin version | [build.gradle](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fandroid\u002Fbuild.gradle#L2) |\n| ✅ | Android | Apk attributes | build.gradle ([compileSdkVersion](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fandroid\u002Fapp\u002Fbuild.gradle#L30), [applicationId](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fandroid\u002Fapp\u002Fbuild.gradle#L43), [minSdkVersion](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fandroid\u002Fapp\u002Fbuild.gradle#L44), [targetSdkVersion](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fandroid\u002Fapp\u002Fbuild.gradle#L45)) |\n| ✅ | Android | Switching between Development and Production environment | [build.gradle](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fandroid\u002Fapp\u002Fbuild.gradle#L50-L75), [Flavor dirs](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Fandroid\u002Fapp\u002Fsrc), [signingConfigs](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Fandroid\u002Fapp\u002FsigningConfigs) |\n| ✅ | iOS | Xcode version | [compatibilityVersion](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002F3ae7135cc040fecf5bbb2100a353f6594037752d\u002Fios\u002FRunner.xcodeproj\u002Fproject.pbxproj#L182) |\n| ✅ | iOS | Podfile | [Podfile](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fios\u002FPodfile) |\n| ✅ | iOS | Switching between Development and Production environment | [xcconfig](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Fios\u002FConfig), [Podfile](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Fios\u002FPodfile#L7-L12) |\n| ✅ | [Firebase](https:\u002F\u002Ffirebase.flutter.dev\u002Fdocs\u002Foverview) | [Android] Switching between Development and Production google-service.json using flavors | [development and production](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Fandroid\u002Fapp\u002Fsrc) |\n| ✅ | [Firebase](https:\u002F\u002Ffirebase.flutter.dev\u002Fdocs\u002Foverview) | [iOS] Switching between Development and Production GoogleService-Info.plist using run script| [copy_google_service.sh](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fios\u002FScripts\u002Fcopy_google_service.sh), [development and production](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Fios\u002FRunner\u002FResources\u002FFirebase) |\n| ✅ | [Firebase Auth](https:\u002F\u002Ffirebase.flutter.dev\u002Fdocs\u002Fauth\u002Foverview) | SignIn, SignOut | [auth_data_source_impl.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fremote\u002Fauth_data_source_impl.dart) |\n| ✅ | [Firebase Crashlytics](https:\u002F\u002Ffirebase.flutter.dev\u002Fdocs\u002Fcrashlytics\u002Foverview) | Crash Reports | [main.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fmain.dart) |\n| ✅ | [Firebase Performance](https:\u002F\u002Ffirebase.flutter.dev\u002Fdocs\u002Fperformance\u002Foverview) | Network monitoring with [dio_firebase_performance](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fdio_firebase_performance) | [app_dio.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Feb749c742216088cbf2ff821f463e3de02d7d3b3\u002Flib\u002Fdata\u002Fremote\u002Fapp_dio.dart#L27-L28) |\n\n#### Architecture\n\n|Working status|Category|Description|Codes|\n|:---:|---|---|---|\n| ✅ | Base | Using [Riverpod](https:\u002F\u002Fpub.dev\u002Fpackages\u002Friverpod) + [Hooks](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fflutter_hooks) + [ChangeNotifier](https:\u002F\u002Fflutter.dev\u002Fdocs\u002Fdevelopment\u002Fdata-and-backend\u002Fstate-mgmt\u002Fsimple#changenotifier) + MVVM | [news_page.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fui\u002Fnews\u002Fnews_page.dart), [news_view_model.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fui\u002Fnews\u002Fnews_view_model.dart), [news_repository.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Frepository\u002Fnews_repository.dart), [news_data_source.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fremote\u002Fnews_data_source.dart) |\n| ✅ | Networking | Using [dio](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fdio) and [Retofit](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fretrofit) | [app_dio.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fremote\u002Fapp_dio.dart), [news_data_source.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fremote\u002Fnews_data_source.dart) |\n| ✅ | Data | Using [Freezed](https:\u002F\u002Fpub.dev\u002Fpackages\u002Ffreezed) | [model classes](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fmodel) |\n| ✅ | Constants | Define constants and route names | [constants.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Ffoundation\u002Fconstants.dart) |\n| ✅ | Localization | Switching between two languages with [Intl package](https:\u002F\u002Fdocs.google.com\u002Fdocument\u002Fd\u002F10e0saTfAv32OZLRmONy866vnaw0I2jwL8zukykpgWBc\u002Fedit) | [*.arb](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Flib\u002Fl10n) |\n| ✅ | Error handling | Using Result pattern - A value that represents either a success or a failure, including an associated value in each case. | [result.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Fmodel\u002Fresult.dart), [news_repository_impl.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fdata\u002Frepository\u002Fnews_repository_impl.dart#L16), [home_page.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fe8f0ed78a62e5b27609e60206bd121295a13faac\u002Flib\u002Fui\u002Fhome\u002Fhome_page.dart#L51-L63) |\n\n#### UI\n|Working status|Category|Description|Codes|\n|:---:|---|---|---|\n| ✅ | Theme | Staticly Switch between light and dark themes | [app_theme.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fapp.dart#L15-L17) |\n| ✅ | Font | Using [Google font](https:\u002F\u002Fpub.dev\u002Fpackages\u002Fgoogle_fonts) | [app_theme.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Flib\u002Fui\u002Ftheme\u002Fapp_theme.dart#L40) |\n| ✅ | Transition | Simple animation between screens using [Hero](https:\u002F\u002Fflutter.dev\u002Fdocs\u002Fdevelopment\u002Fui\u002Fanimations\u002Fhero-animations) | [article_item.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Flib\u002Fui\u002Fcomponent\u002Farticle_item.dart#L28), [detail_page.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fbe26dc3f7ff27ee2710326abe8ed09893a35386c\u002Flib\u002Fui\u002Fdetail\u002Fdatail_page.dart#L13-L24) |\n\n#### Testing\n|Working status|Category|Description|Codes|\n|:---:|---|---|---|\n| ✅ | API(Repositories) | Using [mocktail](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fmocktail) | [view_mode_test.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Ftest\u002Fui\u002Fview_model_test.dart) |\n| ✅️ | UI | Using [mocktail](https:\u002F\u002Fgithub.com\u002Ffelangel\u002Fmocktail) | [widget_test.dart](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Ftest\u002Fui\u002Fwidget_test.dart) |\n| ✅ | Coverage reports | Send the report to [Codecov](https:\u002F\u002Fcodecov.io\u002F) on CI |[codecov.yml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fcodecov.yml), [codecov.sh](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fscripts\u002Fcodecov.sh), [flutte-ci.yml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002F8e2a373af5e4603aaa75d3c9b9af8150400ab46e\u002F.github\u002Fworkflows\u002Fflutter-ci.yml#L66-L71) |\n\n#### CI\n|Working status|Category|Description|Codes|\n|:---:|---|---|---|\n| ✅ | Git | Git hooks for format and analyze | [package.json](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fpackage.json#L4-L11), [Makefile](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002FMakefile#L9-L12)|\n| ✅ | Git | .gitignore settings | [.gitignore](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002F.gitignore) |\n| ✅ | Build | Using [Codemagic](https:\u002F\u002Fcodemagic.io\u002F) |[codemagic.yaml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fcodemagic.yaml)|\n| ✅ | Build | Using [Bitrise](https:\u002F\u002Fwww.bitrise.io\u002F) |[bitrise.yml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002Fbitrise.yml)|\n| ✅ | Build | Using [Github Actions](https:\u002F\u002Fgithub.com\u002Ffeatures\u002Factions) | [.github\u002Fworkflows\u002Fflutter-ci.yml](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Fblob\u002Fmain\u002F.github\u002Fworkflows\u002Fflutter-ci.yml) |\n\n## Getting Started\n\n\n### Setup\n\n```shell script\n$ make setup\n$ export PATH=\"$PATH\":\"$HOME\u002F.pub-cache\u002Fbin\" # Add your run-commands (.zshrc, .bashrc, etc)\n$ make dependencies\n$ make build-runner\n```\n\n### How to add assets(images..)\n1. Add assets\n2. Run [FlutterGen](https:\u002F\u002Fgithub.com\u002Ffluttergen)\n\n### How to add localizations\n1. Edit [*.arb](https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fflutter-architecture-blueprints\u002Ftree\u002Fmain\u002Flib\u002Fl10n) files.\n2. Run generate the `flutter pub get`\n\n\u003Cbr\u002F>\n\n### Make .apk and .ipa file\n\n\u003Cimg height=\"540px\" src=\"https:\u002F\u002Fgithub.com\u002Fwasabeef\u002Fart\u002Fraw\u002Fmaster\u002Fflutter-architecture-blueprints\u002Frunning-app.gif\" align=\"left\" \u002F>\n\nAndroid\n```shell script\n$ make build-android-dev\n$ make build-android-prd\n```\n\niOS\n```shell script\n$ make build-ios-dev\n$ make build-ios-prd\n```\n\n### Run app\n```shell script\n$ make run-dev\n$ make run-prd\n```\n## Special Thanks.\n\n- [News API](https:\u002F\u002Fnewsapi.org\u002F)\n\n**Contributors**\n- [lcdsmao](https:\u002F\u002Fgithub.com\u002Flcdsmao)\n\n","Flutter Architecture Blueprints 是一个介绍如何使用MVVM架构和项目结构方法来开发Flutter应用的项目。它基于Dart语言，遵循MVVM（Model-View-ViewModel）设计模式，并结合Repository模式来管理数据层逻辑，从而实现业务逻辑与UI展示的有效分离。此外，该项目还采用了严格的代码风格检查工具如flutter_lints，以及先进的依赖管理和代码生成工具如Freezed和FlutterGen，以确保代码质量和开发效率。适合于希望采用现代化架构实践构建高质量跨平台移动应用的开发者或团队，在iOS 13+及Android 5.1+环境中均可良好运行。",2,"2026-06-11 03:22:07","top_language"]