用途:定义 Flutter 应用的分层架构与 feature-first 文件组织方式,用于设计新应用或功能的目录结构、创建 View、ViewModel、Repository、Service、决定逻辑归属层、连接依赖注入、为复杂业务添加 domain 层,以及把 type-first 重构为 feature-first。
主要能力:把应用分为 UI 层与 Data 层,复杂应用在两者之间加 Logic(Domain)层。规则包括:只有相邻层可通信,UI 层不得直接访问 Service;仅当业务逻辑过于复杂或被多屏复用时才加 Logic 层;数据变更只发生在 Data 层,Repository 为 SSOT;遵循单向数据流,状态向下、事件向上。按功能而非类型组织代码,每个功能目录包含 data/、ui/ 及可选 domain/。业务逻辑持有者名称随状态管理方案而定:MVVM/ChangeNotifier 用 *_viewmodel.dart 或 *_controller.dart,BLoC 用 *_cubit.dart 或 *_bloc.dart,Provider/Riverpod 用 *_provider.dart 或 *_notifier.dart。View 只做展示并传递事件;业务逻辑持有者把数据转为 UI 状态并暴露命令;Repository 负责缓存、错误处理、刷新与模型转换;Service 封装 API 端点、无状态。
使用方式:新增功能时依次创建功能目录、实现 Service、实现 Repository、实现 ViewModel、实现 View,并在 DI 中注册,最后验证 View 未直接访问 Service 且数据单向流动。依赖通过构造函数注入,并定义抽象接口以便替换实现。
限制:domain 层仅用于复杂或复用逻辑,简单 CRUD 应用不应添加;资料未提供具体安装命令、收费、平台或效果信息。