Flutter Zero 文档¶
Flutter Zero 是一套 企业级 Flutter MVI 模板,由三个独立仓库协作:
| 仓库 | 角色 |
|---|---|
flutter_zero_app |
示例应用(模板落地后的真实项目样例,含 home / counter / search / login / settings 模块演示) |
flutter_zero_cli |
脚手架工具 fluzer(创建项目、生成功能模块、生成类型安全的国际化访问层、管理模板缓存、检查更新) |
flutter_zero_template |
纯模板源(Mason Brick),fluzer 由此渲染出项目与模块骨架 |
设计思想¶
模板围绕两条主线构建,所有封装都服务于此:
- 单向数据流(MVI):用户操作 →
Event(Intent)→Bloc(ViewModel)→State(ViewState)→View纯函数渲染。状态是唯一渲染来源,UI 永远只读取状态、发射意图。 - 副作用与状态分离:Toast / Loading / 弹窗等一次性 UI 行为走独立的
Effect通道,不污染State,也不存在单槽覆盖 / 重复投递。 - 错误处理:底层
DioException等异常经runCatching包装为Result<T>(成功 / 失败 / 取消),Failure直接携带原始Exception,业务层只处理三种显式终态,不再写try/catch样板。
开箱即用的封装积木¶
| 积木 | 位置 | 解决什么 |
|---|---|---|
| 四个 BLoC Mixin | core/bloc/ |
可等待事件、自动取消网络、副作用流、统一错误处理 |
| Effect 系统 | core/effect/ |
ToastEffect / DialogEffect / LoadingEffect + 责任链处理 |
| Notifiers 系统 | core/notifiers/ |
无 BuildContext 也能弹 Toast / Loading(桥接 BuildContext) |
| 错误体系 | core/result/ |
Result<T>(Success / Failure / Cancel),Failure 直接携带原始 Exception |
BaseRepository |
core/network/ |
仅持有 Dio,不解析响应、不抛框架异常,解析与抛错由你决定 |
| 三文件 DI | core/di/ |
基础设施注册、模块自动注入、实现可替换 |
文档导航¶
- 快速上手 —— 安装
fluzer、创建项目、生成功能模块,并端到端写完一个功能模块。 - 架构设计
- 总览与分层 —— 三仓库关系、目录结构、MVI 落地、单向数据流、分层边界。
- BLoC 四个 Mixin ——
BlocAwaitMixin/BlocCancelTokenMixin/BlocEffectMixin/BlocErrorHandlerMixin的用法。 - Effect 与 Notifiers —— 一次性副作用通道与通知服务。
- 错误处理与 Result —— 异常处理、
Result<T>、零封装原则。 - 依赖注入 ——
get_it三文件约定与模块自动注册。 - CLI 参考 ——
fluzer命令、目录结构、配置、调试环境变量。 - 发布与版本 —— 版本约束规则 / 发布流程 / CLI 版本管理 / 模板版本管理。
关于网络层
网络请求封装(Dio、拦截器)属于数据层细节,本身不在文档主体展开;业务侧只需关心 Repository 暴露的方法与抛出的异常类型(任意 Exception)。
本页原文:docs/zh/index.md