Flutter项目 lib/ 目录结构(大厂规范)

javascript 复制代码
lib/
├── main.dart                 # 入口文件
├── app.dart                  # App 根组件、路由初始化
├── core/                     # 核心基础层(不含业务)
│   ├── network/              # 网络层(dio封装、拦截器)
│   ├── storage/              # 本地存储(SharedPreferences/Hive)
│   ├── utils/                # 工具类(日期、格式化等)
│   ├── constants/            # 常量(颜色、尺寸、字符串)
│   └── extensions/           # Dart 扩展方法
├── common/                   # 公共业务层
│   ├── widgets/              # 公共组件(Button、Dialog等)
│   ├── models/               # 公共数据模型
│   └── services/             # 公共服务(推送、埋点等)
├── routes/                   # 路由管理(GoRouter/AutoRoute)
│   ├── app_router.dart
│   └── route_names.dart
├── features/                 # 业务功能模块(按特性划分)
│   ├── home/
│   │   ├── data/             # 数据层(API、Repository)
│   │   ├── domain/           # 领域层(实体、用例)
│   │   └── presentation/     # 表现层(页面、组件、状态)
│   ├── player/
│   │   ├── data/
│   │   ├── domain/
│   │   └── presentation/
│   └── profile/
│       ├── data/
│       ├── domain/
│       └── presentation/
└── generated/                # 自动生成代码(json_serializable、l10n)
    ├── l10n/
    └── assets.gen.dart

每个 features/xxx/presentation/ 内部通常还有:

javascript 复制代码
presentation/
├── pages/        # 页面级 Widget
├── widgets/      # 该模块私有组件
├── bloc/         # 或 provider/、viewmodel/(状态管理)
└── binding/      # 依赖注入绑定(GetX风格)

核心理念差异

Flutter 是"一切皆 Widget"的组合模式,结构更偏向领域驱动设计(DDD),data / domain / presentation 三层分离是主流;

UniApp 继承 Vue 的"单文件组件"思想,结构更接近传统前端,页面即文件,配置驱动路由,上手门槛更低但大型项目的分层约束较弱。

相关推荐
不羁的木木18 小时前
给鸿蒙 App 增加用系统应用打开文件的能力 —— open_app_file 的鸿蒙使用指南
flutter·harmonyos
HouWan19 小时前
Flutter: MediaQuery.of(context) 为什么可能拖慢页面?
android·flutter·ios
西西学代码1 天前
flutter---井字游戏
flutter
tushanxing1 天前
Day 2: 容器与单子布局基础
flutter
程序员老刘2 天前
跨平台开发地图 | 2026年9月
flutter·客户端
HouWan2 天前
Flutter iOS UISceneDelegate 迁移指南:理清新的 Scene 生命周期
flutter·ios·app
技术任我行XTing2 天前
【DFX系列】Flutter 鸿蒙应用外接纹理介绍及问题定位
flutter·harmonyos
恋猫de小郭2 天前
Flutter GSoC 2026 提案进度解读,补上 DevTools、FFI 和原生平台的关键缺口
android·前端·flutter