用途:按推荐的分层方式架构 Flutter 应用,适用于新项目结构搭建或为可扩展性进行重构。
核心原则:强制关注点分离,将 UI 渲染与业务逻辑、数据获取解耦,按层组织代码并在层内按功能拆分;维护单一数据源(SSOT),应用状态与数据集中在 Data 层,只有 SSOT 有权修改对应数据;实现单向数据流(UDF),状态自 Data 层向下流向 UI 层,事件自 UI 层向上流向 Data 层;把 UI 视为状态的函数,用不可变状态对象驱动 UI,状态变化时响应式重建组件。
分层结构:按复杂度分为 2 至 3 层,层间只与相邻层通信。UI 层含 Views(Widgets)与 ViewModels:Views 保持精简、可复用,剥离业务与数据获取逻辑,仅处理动画、路由、布局约束等 UI 关注点;ViewModels 管理 UI 状态,消费领域模型并转换为展示格式,向 Views 暴露状态并处理用户交互事件。Logic 层(Domain)为条件层:复杂客户端业务逻辑时实现 Use Cases 或 Interactors,编排多个仓库交互;标准 CRUD 应用可省略,让 ViewModels 直接与 Repositories 交互。Data 层(Model)作为所有应用数据的 SSOT,处理业务数据、外部 API 消费、事件处理与数据同步,严格分为 Repositories 与 Services。
Data 层实现:Services 包装外部 API(HTTP 服务器、本地数据库、平台插件),写成无状态 Dart 类,不存应用状态,每个外部数据源对应一个 Service 类。Repositories 作为领域数据的 SSOT,消费 Services 的原始数据,处理缓存、离线同步与重试逻辑,并将原始数据转换为供 ViewModels 使用的干净领域模型。
功能实现流程:1 定义领域模型(不可变 Dart 类);2 实现 Services(无状态,处理原始数据获取);3 实现 Repositories(消费 Services、处理缓存、返回领域模型);4 实现 ViewModels(消费 Repositories,暴露不可变状态并定义用户操作命令);5 实现 Views(绑定 ViewModel 状态并在交互时触发其方法);6 运行验证器,对 Services、Repositories、ViewModels 执行单元测试,对 Views 执行组件测试,根据失败结果修复逻辑或 mock 错误后重跑直至通过。
限制:资料未提供具体安装命令、依赖包、收费或平台信息。