メインコンテンツに進む

StreamProvider

StreamProviderFutureProviderStream 版です。

一般的には次のような用途で使われます。

  • Firebase や WebSocket の監視するため。
  • 一定時間ごとに別のプロバイダを更新するため。

Stream 自体が値の更新を監視する性質を持つため、StreamProvider を使うことにあまり意義を見出せない方もいるかもしれません。 Flutter の StreamBuilder で十分ではないか、と。

しかし、StreamBuilder の代わりに StreamProvider を使うことで次の利点を得ることができます。

  • 他のプロバイダで ref.watch を通じてストリームを監視することができる。
  • AsyncValue により loading/error のステートを適切に処理することができる。
  • 通常のストリームとブロードキャスト(broadcast)ストリームを区別する必要がない。
  • ストリームから出力された直近の値をキャッシュしてくれる(途中で監視を開始しても最新の値を取得することができる)。
  • StreamProvider をオーバーライドすることでテスト時のストリームを簡単にモックすることができる。