Riverpodの使い分けまとめ
大人気の状態管理パッケージ「riverpod」の使い方をまとめておきます。
<監視対象別>
・定数や他のProvider => Provider
・変数(String,int,bool等) => StateProvider
・リストやマップ => StateNotifierProvider
・API通信などの非同期処理 => FutureProvider
・DBの更新を常に監視して画面更新 => StreamProvider
<各Providerの特徴>
『Provider』
・定数を監視する
・他のプロバイダーを監視する
『StateProvider』
<特徴>
・外部から変更可能なステート(状態)を公開する
┗列挙型(enum)、例えばフィルタの種類など
┗文字列型、例えばテキストフィールドの入力内容など
┗bool 型、例えばチェックボックスの値など
┗数値型、例えばページネーションのページ数やフォームの年齢など
・List型やMap型などの監視には適さない
・StateNotifierProviderのような計算ロジックが必要なものには適さない
『StateNotifierProvider(&StateNotifier)』
・ユーザー操作などにより変化するState(状態)を監視する際に使う
・イミュータブル(だがイベントに応じて変わる)なステートを公開する
・ステートを変更するためのビジネスロジックを一つの場所で集中管理して保守性を高める
『FutureProvider』
・ネットワークリクエストなど、非同期処理を実行するときに使う
・非同期操作の error/loading ステートを適切に処理するため
・非同期的に取得した複数の値を組み合わせて一つの値にするため
・何かの値が変わったときに自動でデータを再取得するよう設定することで、プロバイダが常に最新データを外部に公開することを保証できる
『StreamProvider』
<特徴>
・FirebaseやWebsokectを監視するために使うために使う
・一定時間ごとに別のプロバイダを更新するため使う
・ビデオストリーミングや天気予報のAPIなど非同期データのストリームを扱うときに使用される
Discussion