Flutter 架构蓝图

Flutter 架构蓝图是一个项目,它介绍了在 Flutter 应用开发中使用的 MVVM 架构和项目结构方法。

安装

环境

iOS

  • iOS 13+

Android

  • Android 5.1+
    • minSdkVersion 22
  • targetSdkVersion 30

应用架构

代码风格

资源、字体

如果添加了任何资源或字体

模型

如果添加了任何 API 结果模型

本地化

如果添加了任何本地化 (例如,编辑了 *.arb 文件)

Git 提交信息风格

代码集合

项目设置

工作状态 类别 描述 代码
Dart Dart 版本 pubspec.yaml
asdf asdf .tool-versions
Dart 在开发和生产环境之间切换 constants.dart, runConfigurations, Makefile
Dart Lint / 分析 analysis_options.yaml
Android Kotlin 版本 build.gradle
Android APK 属性 build.gradle (compileSdkVersion, applicationId, minSdkVersion, targetSdkVersion)
Android 在开发和生产环境之间切换 build.gradle, Flavor 目录, signingConfigs
iOS Xcode 版本 compatibilityVersion
iOS Podfile Podfile
iOS 在开发和生产环境之间切换 xcconfig, Podfile
Firebase [Android] 使用 flavors 在开发和生产环境之间切换 google-service.json 开发和生产
Firebase [iOS] 使用 run script 在开发和生产环境之间切换 GoogleService-Info.plist copy_google_service.sh, 开发和生产
Firebase 认证 登录、登出 auth_data_source_impl.dart
Firebase Crashlytics 崩溃报告 main.dart
Firebase Performance 使用 dio_firebase_performance 进行网络监控 app_dio.dart

架构

工作状态 类别 描述 代码
基础 使用 Riverpod + Hooks + ChangeNotifier + MVVM news_page.dart, news_view_model.dart, news_repository.dart, news_data_source.dart
网络 使用 dioRetofit app_dio.dart, news_data_source.dart
数据层 使用 Freezed 模型类
常量 定义常量和路由名称 constants.dart
本地化 使用 Intl 包 在两种语言之间切换 *.arb
错误处理 使用 Result 模式 – 一个表示成功或失败的值,并在每种情况下都包含一个关联值。 result.dart, news_repository_impl.dart, home_page.dart

UI

工作状态 类别 描述 代码
主题 静态切换浅色和深色主题 app_theme.dart
字体 使用 Google 字体 app_theme.dart
过渡 使用 Hero 在屏幕之间进行简单的动画 article_item.dart, detail_page.dart

测试

工作状态 类别 描述 代码
API (存储库) 使用 mocktail view_mode_test.dart
✅️ UI 使用 mocktail widget_test.dart
覆盖率报告 在 CI 上将报告发送到 Codecov codecov.yml, codecov.sh, flutte-ci.yml

CI

工作状态 类别 描述 代码
Git 用于格式化和分析的 Git 钩子 package.json, Makefile
Git .gitignore 设置 .gitignore
构建 使用 Codemagic codemagic.yaml
构建 使用 Bitrise bitrise.yml
构建 使用 Github Actions .github/workflows/flutter-ci.yml

入门

设置

$ make setup
$ export PATH="$PATH":"$HOME/.pub-cache/bin" # Add your run-commands (.zshrc, .bashrc, etc)
$ make dependencies
$ make build-runner

如何添加资源 (图片等)

  1. 添加资源
  2. 运行 FlutterGen

如何添加本地化

  1. 编辑 *.arb 文件。
  2. 运行 `flutter pub get` 来生成

生成 .apk 和 .ipa 文件

Android

$ make build-android-dev
$ make build-android-prd

iOS

$ make build-ios-dev
$ make build-ios-prd

运行应用

$ make run-dev
$ make run-prd

特别鸣谢。

贡献者

GitHub

查看 Github