SuperAPI AI 工具集

riverpod-select

编程与开发

查看项目

更新于 10-16 01:14

技能介绍

用途:在 Riverpod 中减少不必要的组件重建。默认 ref.watch(provider) 会在 provider 值变化(按引用或相等性判断)时重建;若组件只用到状态的一部分(例如 User 的某个字段),其他字段变化仍会触发重建。select 用于只监听状态的一个子集,仅当被选中的值按 == 判断发生变化时才重建。

主要能力与用法:语法为 String name = ref.watch(provider.select((it) => it.firstName)); 然后 return Text('Hello $name');。可对不同的属性多次调用 select。被选中的值应为不可变;就地修改返回的 List 或对象不会触发重建。

异步 provider:对异步 provider 常使用 ref.watch(provider.future)。若要在已解析的数据上做选择而非针对整个 AsyncValue,可使用 selectAsync(在可用时):它对数据应用 select 并返回 Future。具体 API 请以所用版本的 Riverpod 文档为准。

适用场景与限制:仅当“其他”属性频繁变化,且已测量确认重建是性能瓶颈时才使用。select 会带来少量开销和额外复杂度;除非确实需要该优化,否则优先使用普通 watch。