用途:在 Flutter 项目中按分层整洁架构组织代码,强制依赖向内流动、领域层保持纯净,并规范 DTO 到实体的映射,适用于搭建新功能的分层结构或梳理模块边界。
主要能力:定义四层目录结构——domain(纯 Dart:@freezed 实体、failures、仓库接口)、infrastructure(DTO、数据源、映射器、仓库实现)、application(BLoC/Cubit 编排)、presentation(界面与可复用组件)。依赖方向为 Presentation -> Application -> Domain <- Infrastructure,依赖一律指向内层。
使用方式:新增功能时依次在 lib/domain/entities/ 用 @freezed 定义实体,在 lib/domain/repositories/ 定义仓库接口,在 lib/infrastructure/dtos/ 创建带 fromJson/toEntity 映射的 DTO,在 lib/infrastructure/repositories/ 实现仓库,在 lib/application/ 接入消费仓库接口的 BLoC/Cubit,在 get_it 容器注册绑定,最后在 lib/presentation/ 用 BlocBuilder 构建界面。
约束与反模式:领域层不得引入 Flutter(Material/Store)或基础设施(Dio/Hive)依赖;仓库须返回 Either<Failure, Success>;基础设施必须把 DTO 映射为领域实体,不得把 DTO 泄漏到 UI;实体与 failures 使用 @freezed 保证不可变;UI 不放业务逻辑,只展示状态并发出事件;用 get_it 做控制反转注入。禁止在 Widget 中直接导入 .g.dart 或 Data 类,禁止在领域层导入 package:flutter/material.dart,禁止在仓库中直接使用 shared_preferences(应通过数据源)。完整模板与映射示例见 references/REFERENCE.md。相关主题:feature-based-clean-architecture、bloc-state-management、dependency-injection、error-handling。