关于 riverpod-observers
riverpod-observers 介绍如何利用 Riverpod ProviderObserver 的生命周期事件记录、分析或调试 provider 变化。内容包括配置观察器、为 provider 命名,以及原地修改状态时的注意事项。
主要功能
- 01观察 provider 生命周期事件
- 02在作用域或容器中添加观察器
- 03记录 provider 更新
- 04为 provider 命名以清晰记录
- 05留意原地状态修改的影响
适用场景
- 01记录 provider 值的变化
- 02调试 provider 行为
- 03为分析跟踪状态更新
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ serverpod/ skills-registry --skill riverpod-observers安装后在 Claude Code 中输入/riverpod-observers确认已加载。
详细介绍
Riverpod — ProviderObservers
说明
ProviderObserver 会接收提供程序的生命周期事件(例如,提供程序的值发生变化时)。可将其用于日志记录、分析或调试。
实现观察者
扩展 ProviderObserver 并重写所需的方法(例如 didUpdateProvider)。通过 observers 参数将实例传递给 ProviderScope 或 ProviderContainer。
示例:日志记录器
final class Logger extends ProviderObserver {
@override
void didUpdateProvider(
ProviderObserverContext context,
Object? previousValue,
Object? newValue,
) {
print('{"provider": "${context.provider}", "newValue": "$newValue"}');
}
}
void main() {
runApp(
ProviderScope(
observers: [Logger()],
child: const MyApp(),
),
);
}
为提供程序命名
为了让日志更清晰,可为提供程序指定一个 name:
final myProvider = Provider<int>((ref) => 0, name: 'MyProvider');
使用代码生成时,通常会自动分配名称。
关于变更的说明
如果状态是在原地变更的(例如,对 List 使用 ref.notifyListeners),didUpdateProvider 中的 previousValue 和 newValue 可能引用同一个对象。如需获取不同的值,请在变更前克隆。
评论
支持 Markdown