SuperAPI AI 工具集

flutter-state-management

编程与开发

查看项目

更新于 10-16 08:49

技能介绍

用途:在 Flutter 应用中完成状态管理的选型、实现与维护,覆盖从决策到落地的完整框架。

主要能力:提供基于场景的决策建议,例如单屏异步数据用 FutureBuilder 或本地 AsyncNotifier;跨屏响应式共享状态用 Riverpod(AsyncNotifierProvider、NotifierProvider);复杂事件驱动且需要审计轨迹用 Bloc 或 Cubit;简单共享状态用 ChangeNotifier + ListenableBuilder;服务端实时数据用 StreamProvider 或 StreamBuilder。建议避免 GetX、Redux、MobX,理由是仪式感高、隐式魔法、可测试性差。

Riverpod 配置:在 pubspec.yaml 添加 flutter_riverpod、riverpod_annotation、riverpod_generator、build_runner;用 ProviderScope 包裹应用根节点;运行命令 dart run build_runner watch --delete-conflicting-outputs 生成代码。类型包括 AsyncNotifierProvider、NotifierProvider、Provider、StreamProvider 及 family 参数化 provider。

关键用法:在 build 或 provider build 内用 ref.watch 订阅;在回调、事件处理或 notifier 方法内用 ref.read 做一次性读取。生命周期默认 autoDispose,需要常驻用 keepAlive;可用 ref.invalidate 强制刷新;用 ref.select 只监听特定字段变化。

Bloc/Cubit:Cubit 用方法调用发射状态,适合表单、开关和简单页面;Bloc 用显式 Event 映射状态转换,适合需要审计的复杂流程。widget 包括 BlocBuilder、BlocListener、BlocConsumer。

反模式:不要用 setState 处理业务逻辑;同一功能不要混用两个状态管理器;异步 provider 必须处理 loading、error、data 三态;不要在 build 内用 ref.read;不要在 provider 中持有 BuildContext;不要将组件局部关注点提升为全局状态;避免过宽 watch,使用 select。

输出产物:不生成独立文档制品,状态管理决策记录在 docs/architecture/architecture_decisions.md 与 docs/architecture/technical_plan.md。本技能引用 flutter-architecture 技能、@references/state-management-snippets.md、state-management-specialist 智能体及 @references/dart-error-mapping.md。