LoginSignup
0
0

【Flutter】snapshot

Last updated at Posted at 2023-12-21

snapshotとは

非同期プログラミングやウィジェットの状態の変更を監視する際に使用される概念。
主に FutureBuilder や StreamBuilder などのウィジェットと組み合わせて利用される。

FutureBuilder での snapshot

FutureBuilder は非同期処理が完了するまで待ち、その後に特定のウィジェットを構築する。snapshot プロパティを介して非同期操作の結果にアクセスする。

FutureBuilder<String>(
  future: fetchData(), // 非同期処理を行う Future オブジェクト
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) { 
      return CircularProgressIndicator(); // データがまだ取得されていない場合のローディング表示
    } else if (snapshot.hasError) {
      return Text('Error: ${snapshot.error}');
    } else {
      // データが取得された場合
      return Text('Data: ${snapshot.data}');
    }
  },
)

snapshot.connectionStateは非同期操作の状態を示す。

StreamBuilder での snapshot

StreamBuilder は Stream(非同期イベントのストリーム)を監視し、新しいデータが流れるたびに再構築する。

StreamBuilder<String>(
  stream: myStream(), // 非同期イベントのストリーム
  builder: (context, snapshot) {
    if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else if (snapshot.hasError) {
      return Text('Error: ${snapshot.error}');
    } else {
      return Text('Data: ${snapshot.data}');
    }
  },
)

感想

ストリームが分からなかったので調べた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0