跳到主要内容

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);
  }
}