mcpField
R
riverpod-observers

riverpod-observers

github.com/serverpod開発1074 回インストール34 週間前に更新
リポジトリ

riverpod-observers について

riverpod-observersは、RiverpodのProviderObserverによるライフサイクルイベントを使い、プロバイダーの変更を記録・分析・デバッグする方法を説明するスキルです。オブザーバーの設定やプロバイダーの命名に加え、状態を直接変更する際の注意点も扱います。

主な機能

  1. 01プロバイダーのライフサイクルイベントを監視
  2. 02スコープまたはコンテナーにオブザーバーを設定
  3. 03プロバイダーの更新を記録
  4. 04ログを明確にするプロバイダーの命名
  5. 05状態の直接変更による影響に注意

活用シーン

  1. 01プロバイダー値の変化を記録
  2. 02プロバイダーの動作をデバッグ
  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');

コード生成を使用すると、通常は名前が自動的に割り当てられます。

ミューテーションに関する注意

状態をインプレースで変更した場合(例:ref.notifyListeners を使用する List)、didUpdateProvider の previousValue と newValue は同じ参照になることがあります。異なる値にするには、変更前にクローンを作成してください。

コメント