mcpField
R
riverpod-pull-to-refresh

riverpod-pull-to-refresh

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

riverpod-pull-to-refresh について

非同期 Provider を使ったプルツーリフレッシュの実装を説明する Riverpod スキルです。Provider の Future の再取得と、AsyncValue による読み込み中、既存データ、エラーの表示を扱います。

主な機能

  1. 01非同期 Provider の設定
  2. 02RefreshIndicator との連携
  3. 03Provider の Future の再取得
  4. 04AsyncValue 状態の処理

活用シーン

  1. 01スクロール可能なリストへのプルツーリフレッシュ追加
  2. 02更新中も既存データを表示
  3. 03取得データの読み込み中とエラー状態の表示

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/serverpod/skills-registry --skill riverpod-pull-to-refresh

インストール後、Claude Code で/riverpod-pull-to-refreshを入力して読み込まれたか確認します。

詳細

Riverpod — プルして更新

手順

Riverpod はプルして更新する操作に適しています。プロバイダーを無効化して更新し、読み込み・データ・エラーの状態の処理は AsyncValue に任せます。

1. プロバイダーと UI

データを取得する非同期プロバイダー(例:FutureProvider または AsyncNotifierProvider)を定義します。ref.watch(provider) で表示すると、AsyncValue を取得できます。

2. RefreshIndicator

スクロール可能なウィジェット(ListView、SingleChildScrollView など)を RefreshIndicator で囲みます。onRefresh では ref.refresh(provider.future) を呼び出し、新しいデータが読み込まれるまでインジケーターを表示し続けます。

RefreshIndicator(
  onRefresh: () => ref.refresh(activityProvider.future),
  child: ListView(
    children: [
      // content
    ],
  ),
)
3. 読み込み状態とエラー状態

AsyncValue のパターンマッチングを使用します。

  • 初回読み込み: データもエラーもない場合は、全画面のスピナーを表示します。
  • 更新: 更新インジケーターを表示し、新しい結果が届くまで以前のデータ(または以前のエラー)を表示し続けます。
  • データ: AsyncValue(:final value?) などを使用して値を表示します。
  • エラー: AsyncValue(:final error?) を使用してエラーを表示します。

例(構文は Riverpod のバージョンによって異なる場合があります):

final activity = ref.watch(activityProvider);
switch (activity) {
  AsyncValue<Activity>(:final value?) => Text(value.activity),
  AsyncValue(:final error?) => Text('Error: $error'),
  _ => const CircularProgressIndicator(),
}

API で nullable なデータに対して公開されている場合は、valueOrNull(または同等の機能)を使用します。お使いのバージョンの AsyncValue API の正確な仕様については、ドキュメントを参照してください。

コメント