用途:本技能说明 Riverpod 中 Consumers 的用法。消费者是一种提供 Ref(此处为 WidgetRef)的 Widget,让你读取并监听 provider;没有 Consumer,Widget 无法访问 provider 树。
主要能力与用法: Consumer(builder):希望继续继承 StatelessWidget 或 StatefulWidget 时使用,builder 回调参数为 (context, ref, child),例如在 builder 内用 ref.watch(myProvider) 获取值并渲染。 ConsumerWidget:改继承 ConsumerWidget 而非 StatelessWidget,build 方法接收 (BuildContext context, WidgetRef ref),用 ref.watch(myProvider) 取值。 ConsumerStatefulWidget + ConsumerState:需要 State(如生命周期或本地状态)时使用;状态对象带有 ref 属性,可在 build 中用 ref.watch(myProvider)。
选择建议:Consumer 适合不想更换 Widget 基类的场景,写法略啰嗦;不需要 State 时推荐 ConsumerWidget,少一层嵌套;需要 State(如 TabController、动画)时用 ConsumerStatefulWidget。
限制与说明:Riverpod 不通过 context.watch 监听 provider,因为这样会破坏 auto-dispose 等依赖“知道 Widget 何时停止监听”的特性;基于 Ref 的消费者才能可靠释放并保证行为正确。hooks_riverpod 还提供 HookConsumerWidget 等以配合 flutter_hooks。可启用 riverpod_lint 获得 IDE 重构(如“Convert to ConsumerWidget”)。本资料未提供收费、价格、平台支持等其他信息。