SuperAPI AI 工具集

state-management-riverpod

编程与开发

查看项目

更新于 10-15 23:56

技能介绍

用途:为 Flutter 项目提供基于 Riverpod 3.x 的状态管理与依赖注入规范,把状态与 DI 视为同一机制。每个功能只有一个 Notifier/AsyncNotifier/StreamNotifier ViewModel,暴露一个不可变状态值,由无状态的 ConsumerWidget 读取;Widget 只保留临时 UI 状态,所有持久化变更走单一 repository 写入路径。

主要能力与规则:状态私有,只能通过意图方法变更并赋新值(copyWith),禁止原地修改;派生值用 getter 或流投影而非存储字段;异步用单一 AsyncValue 或状态枚举穷尽渲染;删除实体时级联清理引用;状态逻辑中禁止 DateTime.now(),改用注入的 Clock(clockProvider)。

Riverpod 用法:按所有权选择 provider 形态——实时查询用 StreamNotifier,非流用 Notifier/AsyncNotifier,DB 投影用 StreamProvider,注入协作者用普通 Provider,按实体/会话用 .family + .autoDispose。默认手写 provider,@riverpod 代码生成为可选。读取用 ref.watch/.select 显示、ref.read(p.notifier) 回调、ref.listen 副作用;避免闭包捕获过期值。provider 作为 DI 接缝,未覆盖时抛错,仅在 main() 的 ProviderScope 中注入真实实现。

适用场景:Flutter 功能优先架构中的状态层、MVVM 与测试接缝。限制:仅覆盖 Riverpod 3.x,禁用 legacy.dart、get_it、package:provider、Bloc;无障碍状态不走 provider,应读 MediaQuery。提交 PR 前运行 scripts/ban-legacy-providers.sh。