用途:为 Flutter 项目搭建并规范 Data 层,区分 DataSource 与 Repository 的职责。
主要能力:DataSource 只访问单一来源(远程 API、本地 DB、文件系统等);Repository 组合多个 DataSource 并以领域视角暴露接口。DataSource 接口交换原始类型/DTO(Map),Repository 接口交换领域模型(如 Recipe),映射由 Repository 实现承担。
领域模型:位于 lib/domain,保持纯 Dart,禁止 import package:flutter。模型用 freezed + json_serializable 生成,含 Recipe.fromJson;修改后执行:dart run build_runner build --delete-conflicting-outputs
响应式存储:需要多屏共享同一状态(如收藏、购物车、登录态)时,用 rxdart 的 BehaviorSubject<Set<int>> 暴露 Stream,并在 toggle 等变更后 add 新值;仅单屏使用时直接返回 Future。
UseCase:位于 lib/domain/use_case/<verb>_<noun>_use_case.dart,单一 execute 入口、无状态,可组合多个 Repository 或应用领域规则,返回 Future、Future<Result<D,E>> 或 Stream。
添加步骤:domain 模型、domain Repository 接口、data 的 DataSource 实现、data 的 Repository 实现(注入 DataSource 并映射),按接口类型在 diSetup() 注册。
限制与反模式:Repository 不应向调用者暴露 Map;domain 不得引入 Flutter;调用方引用接口而非实现类;缓存/存储职责不放在 UseCase。错误处理依赖 flutter-error-handling 技能中的 Result<D,E>,此处暂未提供其余细节。