【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part34 Dartの特徴

基礎 から 学ぶ Flutter 」という書籍で  学習 したことを ブログでアウトプットしていこうと思います。今回は Dart編 ( part34 )です。

前回

【 Flutter 】Flutter を 基礎 から 学習 ( Dart編 ) part33 Dartの特徴

もう少しasync/awaitの学習を行います。

Dartの特徴

async/await

await forというステートメントあるそうです。ストリーム処理を行うときに使用するそうです。
Streamの処理ではlistenを使用して処理していました。
await  for というのはもう一つの処理方式ということでしょうかね。

こちらに説明とサンプルコードがありました。

【Dart】Streamを簡単に学ぶ (zenn.dev)

サンプルコードを使用させていただきました。

import 'dart:math';

Stream chinchiroAsync() async* {
  final random = Random();

  for (var i = 0; i < 3; ++i) {
    // 1秒待機
    await Future.delayed(Duration(seconds: 1));
    
    // ランダムな数値に1を足して返却
    // ここでこの非同期処理は一時停止ですかね?
    // 要求あれば再開しforの先頭に戻って処理する~という流れだった気がします。
    yield random.nextInt(6) + 1;
  }
}

void main() async {
  final stream = chinchiroAsync();
  await for(int i in stream){
    print(i);
  }
}

以下のような動作になります。

最後に

Stream処理のawait forlistenの代替となるのでしょうか?
listenよりもこちらの方が少し理解しやすいのでこちらが定石だと助かります。

今日はここまで!