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