unawaited_futures
此表达式计算出的 Future 缺少 'await'。
描述
#分析器仅在少数特定情况下对此类型为 Future
的表达式生成此诊断:
- 当表达式本身是一个语句时(如
f();
), - 当表达式是级联的一部分时(如
C()..f()
), - 当表达式是字符串插值时(如
'${f()}'
)。
分析器仅在 async
或 async*
函数内的表达式上生成此诊断。
两种常见的修正方法是“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);