mcpField
R
riverpod-observers

riverpod-observers

github.com/serverpod开发1074 次安装34 周前更新
代码仓库

关于 riverpod-observers

riverpod-observers 介绍如何利用 Riverpod ProviderObserver 的生命周期事件记录、分析或调试 provider 变化。内容包括配置观察器、为 provider 命名,以及原地修改状态时的注意事项。

主要功能

  1. 01观察 provider 生命周期事件
  2. 02在作用域或容器中添加观察器
  3. 03记录 provider 更新
  4. 04为 provider 命名以清晰记录
  5. 05留意原地状态修改的影响

适用场景

  1. 01记录 provider 值的变化
  2. 02调试 provider 行为
  3. 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