大型 Flutter 项目应采用模块化架构将功能拆分为独立的 package通过私有仓库管理依赖实现团队并行开发和代码复用。一、多模块 Flutter 工程结构1.1 Monorepo 结构my_flutter_app/ ├── packages/ │ ├── core/ # 核心基础模块 │ │ ├── lib/ │ │ │ ├── network/ # 网络层 │ │ │ ├── storage/ # 存储层 │ │ │ └── utils/ # 工具类 │ │ └── pubspec.yaml │ │ │ ├── design_system/ # 设计系统UI 组件库 │ │ ├── lib/ │ │ │ ├── colors/ │ │ │ ├── typography/ │ │ │ └── components/ │ │ └── pubspec.yaml │ │ │ ├── feature_auth/ # 认证功能模块 │ │ ├── lib/ │ │ │ ├── data/ │ │ │ ├── domain/ │ │ │ └── presentation/ │ │ └── pubspec.yaml │ │ │ ├── feature_product/ # 商品功能模块 │ └── feature_order/ # 订单功能模块 │ ├── apps/ │ ├── customer_app/ # 用户端 App │ └── merchant_app/ # 商家端 App │ ├── melos.yaml # Monorepo 管理配置 └── pubspec.yaml1.2 模块间依赖关系customer_app ↓ depends on feature_product / feature_order / feature_auth ↓ depends on core / design_system1.3 子模块 pubspec.yaml# packages/feature_product/pubspec.yamlname:feature_productversion:0.1.0environment:sdk:3.0.0 4.0.0flutter:3.16.0dependencies:flutter:sdk:flutter# 依赖本地模块core:path:../coredesign_system:path:../design_system# 外部依赖riverpod:^2.5.1flutter_riverpod:^2.5.1dio:^5.4.0freezed_annotation:^2.4.1dev_dependencies:flutter_test:sdk:flutterbuild_runner:^2.4.0freezed:^2.4.7二、包管理与私有仓库2.1 本地路径依赖开发阶段dependencies:my_core:path:../packages/core# 相对路径# 或绝对路径# path: /Users/dev/workspace/packages/core2.2 Git 依赖dependencies:my_design_system:git:url:https://github.com/org/flutter-design-system.gitref:v2.1.0# 指定 tag# ref: main # 指定分支# ref: abc123f # 指定 commit hashpath:packages/design_system# 子目录monorepo 场景2.3 私有 pub.devpub.flutter-io.cn 镜像 / 自建仓库使用 Verdaccio 搭建私有仓库# 安装 Verdaccionpminstall-gverdaccio verdaccio# 发布包flutter pub publish--serverhttp://your-private-server:4873在项目中使用私有仓库# pubspec.yamlpublish_to:http://your-private-server:4873# 指定下载源# 使用 PUB_HOSTED_URL 环境变量# PUB_HOSTED_URLhttp://your-server dart pub getdependency_overrides:my_private_package:hosted:name:my_private_packageurl:http://your-private-server:4873version:^1.0.0三、MelosMonorepo 管理工具# melos.yamlname:my_flutter_projectpackages:-packages/**-apps/**command:bootstrap:usePubspecOverrides:truescripts:# 所有包并行执行 flutter pub getget:run:melos exec--flutter pub getdescription:Get dependencies for all packages# 全量测试test:run:melos exec--flutter testpackageFilters:dirExists:testdescription:Run all tests# 代码检查lint:run:melos exec--flutter analyzedescription:Lint all packages# 代码生成build:run:melos exec--dart run build_runner build--delete-conflicting-outputspackageFilters:dependsOn:build_runnerdescription:Run build_runner for all packages# 发布到私有仓库publish:run:melos exec--flutter pub publish--serverhttp://your-serverpackageFilters:published:false# 常用 Melos 命令melos bootstrap# 初始化所有包melos run get# 为所有包安装依赖melos runtest# 运行所有测试melos run build# 执行代码生成melos list# 列出所有包小结概念要点模块化按功能拆分 package各模块独立开发测试依赖类型path本地→ git共享代码→ hosted发布版本私有仓库Verdaccio 搭建hosted配置使用MelosMonorepo 管理批量执行脚本 下一节8.2 配置管理