📖

[Flutter]StreamBuilder  非同期処理で使うwidget

2022/11/22に公開

https://youtu.be/MkKEWHfy99Y
https://api.flutter.dev/flutter/widgets/StreamBuilder-class.html

StreamBuilder

非同期処理に優れている
Stream と Builderを渡すことで、ストリームが新しいデータイベントを出力するたびにその子要素を再作成し、最新イベントを連携させることができる

StreamBuilder(
 stream: _myStream,
 initialData: 42,
 builder: (context, snapshot){
  return MyWidget(snapshot.data);
  }
);

1)
initialData: 初期データを与えることで、最初のイベントの待機中にウィジェットに表示させることができる
snapshot : アプリの当該部分の外見を宣言する

StreamBuilder(
 stream: _myStream,
 builder: (context, snapshot){
  if(!snapshot.hasData){
   return CirclarProgressIndicator();
  }
  return MyWidget(snapshot.data);
 },
);

2)1)のように初期データを入れない場合、snapshotにデータが存在するか確認する必要がある

詳しく確認する場合は、snapshot.connectionState にて確認する
また、エラーキャッチも忘れないように(snapshot.hasError が便利!)

Discussion