跳到主要內容

async_for_in_wrong_context

async for-in 迴圈只能在 async 函式中使用。

描述

#

當在函式或方法的函式體中發現 async for-in 迴圈,而該函式體未被標記為 asyncasync* 時,分析器會生成此診斷。

示例

#

以下程式碼會生成此診斷,因為 f 的函式體未被標記為 asyncasync*,但 f 包含一個 async for-in 迴圈

dart
void f(list) {
  await for (var e in list) {
    print(e);
  }
}

常見修復方法

#

如果函式應該返回一個 Future,則將函式體標記為 async

dart
Future<void> f(list) async {
  await for (var e in list) {
    print(e);
  }
}

如果函式應該返回值的 Stream,則將函式體標記為 async*

dart
Stream<void> f(list) async* {
  await for (var e in list) {
    print(e);
  }
}

如果函式應該是同步的,則刪除迴圈前的 await

dart
void f(list) {
  for (var e in list) {
    print(e);
  }
}