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 的"单文件组件"思想,结构更接近传统前端,页面即文件,配置驱动路由,上手门槛更低但大型项目的分层约束较弱。

相关推荐
陆断枫10 小时前
Flutter 3.47 动画引擎盘点:Impeller 全平台,和那些"新特性"
flutter
程序员老刘11 小时前
Flet 1.0 思路很好,可惜来晚了
flutter·ai编程·客户端
m0_7381858217 小时前
Flutter 鸿蒙化实战:qr_code_scanner_plus 适配 OpenHarmony,二维码扫描
flutter·华为·harmonyos·鸿蒙
恋猫de小郭17 小时前
Flutter + EmbeddingGemma 2,谷歌发布完全端侧的 AI Edge Foresight
android·前端·flutter
君赏1 天前
基于 FlutterPatch 快速接入 Flutter 热更新
flutter
律宏阔1 天前
Dart FFI 内存管理:用 using + Arena 替代嵌套 try-finally
前端·flutter
律宏阔1 天前
Flutter 调用 Go:从 c-shared + ffigen 到 @Native + Native Assets 踩坑记录
前端·flutter
律宏阔1 天前
Dart FFI 回调无法使用局部变量?使用 NativeCallable.isolateLocal
前端·flutter
天空之城--2 天前
Android一周动态:AI编程、Compose与车载生态新信号
android·flutter
码林鼠2 天前
Flutter之Widget/State 入门文档
flutter