SuperAPI AI 工具集

riverpod-scoping

通用与其它

查看项目

更新于 10-16 01:26

技能介绍

用途:作用域指在非根 ProviderScope 中覆盖某个 Provider,使其行为只影响应用的一部分。常见场景包括页面级定制(如某页专属主题)、性能优化(如 ListView 中只重建变化的项),以及避免把 family 参数逐层向下传递。官方提示该机制较复杂,未来版本可能重做,需谨慎使用。

主要能力与用法:默认不能对 Provider 做作用域,需先通过 dependencies 显式开启;链条中第一个被作用域的 Provider 通常写 dependencies: const [],例如 currentItemIdProvider 使用 Provider<String?>,设置 dependencies: const [] 并返回 null。监听方式与普通 Provider 相同,使用 ref.watch/ref.read;若另一个 Provider 监听被作用域的 Provider,则该监听方必须把被作用域的 Provider 列入自身 dependencies,例如 currentItemProvider 使用 FutureProvider<Item?>,dependencies: [currentItemIdProvider],内部 watch 后按 id 取数据。只有被作用域的 Provider 需要列入 dependencies,非作用域 Provider 不必。设置作用域值使用 overrides:在包裹目标子树的 ProviderScope 上写 overrides: [currentItemIdProvider.overrideWithValue('123')],子树即可读到该值,无需手动向下传参;override 语法可参考 riverpod-overrides。

限制:资料未提供版本要求、安装命令、性能数据或更多示例;作用域机制本身复杂且可能在未来 Riverpod 版本中重做。