SuperAPI AI 工具集

flutter-bloc-state-management

编程与开发

查看项目

更新于 10-15 22:13

技能介绍

用途:为 Flutter 项目设计可预测、可测试的 BLoC/Cubit 状态流,覆盖事件、状态、状态转换与异步并发处理。

主要能力与工作流:先定义事件(如 UserTap、ApiSuccess,建议用 @freezed),再定义状态(Initial、Loading、Data、Error),用 on<Event> 将事件映射到状态,最后连接 UI。状态与事件推荐用 @freezed 表达联合类型。异步数据可用 emit.forEach 处理流,或用 await 后 emit。并发方面,搜索/输入联想等场景可用 bloc_concurrency 的 transformer: restartable() 实现防抖并取消先前请求。

UI 连接:用 BlocBuilder 负责重建(加载指示、数据列表、错误提示),用 BlocListener 处理副作用(导航、Snackbar)。错误处理上,UI 关键错误应发出 Failure 状态;静默或后台事件可让异常传播到全局 onError 拦截器(如 AppBlocObserver),或捕获后调用 addError(e, st) 而不发出错误状态。

测试与校验:要求用 blocTest 覆盖所有状态并验证状态发出顺序;每个 BLoC 需覆盖 Initial → Loading → Success 与 Initial → Loading → Failure;副作用必须放在 BlocListener 而非 BlocBuilder;重型 BlocBuilder 子树需声明 buildWhen;最终 flutter test 通过。

反模式:不要用 .then()(emit 不是 Future,应使用 await 或 emit.forEach);不要 BLoC 直接引用 BLoC,应使用 StreamSubscription 或 BlocListener;不要把逻辑写进 Builder;不要省略 buildWhen。

限制:资料未提供安装命令、依赖版本、平台支持、收费与价格等信息,暂未提供。