跳到主要内容

unawaited_futures

此表达式计算出的 Future 缺少 'await'。

描述

#

分析器仅在少数特定情况下对此类型为 Future 的表达式生成此诊断:

  • 当表达式本身是一个语句时(如 f();),
  • 当表达式是级联的一部分时(如 C()..f()),
  • 当表达式是字符串插值时(如 '${f()}')。

分析器仅在 asyncasync* 函数内的表达式上生成此诊断。

两种常见的修正方法是“await”该表达式,或将表达式包装在对 unawaited() 的调用中。

示例

#

以下代码生成此诊断,因为函数 g 返回一个 Future,但该 Future 没有被 await

dart
Future<void> f() async {
  g();
}

Future<int> g() => Future.value(0);

常见修正

#

如果需要在执行后续代码之前完成 Future,则在调用前添加一个 await

dart
Future<void> f() async {
  await g();
}

Future<int> g() => Future.value(0);

如果不需要在执行后续代码之前完成 Future,则将返回 Future 的调用包装在对 unawaited 函数的调用中

dart
import 'dart:async';

Future<void> f() async {
  unawaited(g());
}

Future<int> g() => Future.value(0);