riverpod-overrides について
riverpod-overridesは、FlutterとDartでコンテナ単位のオーバーライドを使い、Riverpodプロバイダーの動作を変更する方法を解説するスキルです。実装・値・ビルドのオーバーライドや、Familyの一部または全体への適用を扱います。
主な機能
- 01ProviderScopeまたはProviderContainerで設定
- 02実装・値・ビルドのオーバーライド
- 03Familyの引数単位または全体をオーバーライド
- 04テストや環境別の設定に利用
活用シーン
- 01テストでプロバイダーに固定値を渡す
- 02デバッグ時にプロバイダーの動作を差し替える
- 03環境ごとにプロバイダーを設定する
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ serverpod/ skills-registry --skill riverpod-overridesインストール後、Claude Code で/riverpod-overridesを入力して読み込まれたか確認します。
詳細
Riverpod — プロバイダーのオーバーライド
手順
すべてのプロバイダーは、動作を変更するためにオーバーライドできます。オーバーライドは、overrides パラメーターを使用してコンテナー(Flutter では ProviderScope、Dart では ProviderContainer)に設定します。テスト、デバッグ、環境の切り替え、またはスコープ設定(riverpod-scoping を参照)にオーバーライドを使用します。
オーバーライドの設定場所
- Flutter:
overridesを ProviderScope に渡します(通常はルート、またはサブツリーの周囲に設定します)。 - Dart:
overridesを ProviderContainer に渡します。
オーバーライドのメソッド
各プロバイダーの型には、名前が overrideWith で始まるメソッドが用意されています。例:
- overrideWith — 新しい実装を指定します(例:値を返す関数や状態を構築する関数)。
- overrideWithValue — 固定値で置き換えます(例:FutureProvider/StreamProvider の場合)。
- overrideWithBuild — カスタムのビルドロジックを指定します(例:StreamProvider の場合)。
正確なメソッドについては、プロバイダーの API を確認してください(例:Provider.overrideWith、FutureProvider.overrideWithValue)。
例:カウンターをオーバーライドする
// Flutter
void main() {
runApp(
ProviderScope(
overrides: [
counterProvider.overrideWith((ref) => 42),
],
child: MyApp(),
),
);
}
// Dart
final container = ProviderContainer(
overrides: [
counterProvider.overrideWith((ref) => 42),
],
);
Family のオーバーライド
- 単一のパラメーター: 特定の引数をオーバーライドします:
userProvider('123').overrideWith((ref) => User(name: 'User 123'))。 - すべてのパラメーター: Family 全体をオーバーライドします:
userProvider.overrideWith((ref, arg) => User(name: 'User $arg'))。
その他のテストパターンについては、riverpod-family と riverpod-testing を参照してください。
コメント
Markdown 対応