SuperAPI AI 工具集

riverpod-overrides

通用与其它

查看项目

更新于 10-16 01:14

技能介绍

用途:Riverpod 中所有 Provider 都可被覆盖,以改变其行为。覆盖设置在容器上,Flutter 用 ProviderScope,Dart 用 ProviderContainer,通过 overrides 参数传入。常见用途包括测试、调试、区分不同环境以及作用域隔离。

设置位置:Flutter 中把 overrides 传给 ProviderScope,通常放在根节点或某个子树外层;Dart 中把 overrides 传给 ProviderContainer。

覆盖方法:每种 Provider 类型都提供以 overrideWith 开头的方法,例如 overrideWith 提供新实现(返回值的函数或构建状态的函数)、overrideWithValue 用固定值替换(如 FutureProvider/StreamProvider)、overrideWithBuild 自定义构建逻辑(如 StreamProvider)。具体方法名需查看对应 Provider 的 API,例如 Provider.overrideWith、FutureProvider.overrideWithValue。

示例:Flutter 中在 ProviderScope 的 overrides 里写 counterProvider.overrideWith((ref) => 42);Dart 中在 ProviderContainer 的 overrides 里写同样内容。

Family 覆盖:单参数时覆盖某个具体参数,如 userProvider('123').overrideWith((ref) => User(name: 'User 123'));覆盖整个 family 时用 userProvider.overrideWith((ref, arg) => User(name: 'User $arg'))。更多测试模式可参考 riverpod-family 与 riverpod-testing。

限制:资料未提供版本要求、平台限制或额外注意事项。