unawaited-futures
Same as unawaited_futures in Dart lints
- Group
- Style
- Path
lint/style/unawaited-futures- Default
- On (recommended)
- Origin
- Dart lints
- Rule
- 446 of 512
Future results in async bodies must be awaited or marked unawaited.
Forgetting await inside an async function lets the caller continue before
the work finishes and drops its errors:
Future<void> save() async {
writeFile(); // BAD
await writeFile(); // GOOD
unawaited(writeFile()); // GOOD: explicitly fire-and-forget
}
Expression statements, cascade sections, and string interpolations whose
resolved type is Future (or a subtype) or FutureOr are reported inside
async and async* bodies. Assignments,
Future.delayed(duration, computation), Map.putIfAbsent, and members
annotated @awaitNotRequired in this file are exempt; nullable or
unresolved types stay silent.
Invalid
import 'dart:async';
Future<int> fetch() async => 1;
FutureOr<int> maybeFetch() => 1;
class Api {
Future<void> save() async {}
Future<int> get pending async => 1;
}
Future<void> callsFunction() async {
fetch();
}
Future<void> callsMethod(Api api) async {
api.save();
}
Future<void> readsGetter(Api api) async {
api.pending;
}
Future<void> cascade(Api api) async {
api..save();
}
Stream<int> generator() async* {
fetch();
yield 1;
}
void syncWithAsyncClosure() {
final callback = () async {
fetch();
};
callback();
}Future<void> callsFunction() async { fetch();Future<void> callsMethod(Api api) async { api.save();Future<void> readsGetter(Api api) async { api.pending;Future<void> cascade(Api api) async { api..save();Stream<int> generator() async* { fetch(); final callback = () async { fetch();Valid
import 'dart:async';
import 'package:meta/meta.dart' show awaitNotRequired;
import 'package:meta/meta.dart' as meta;
Future<int> fetch() async => 1;
class Api {
Future<void> save() async {}
}
void syncBody() {
fetch();
}
Future<void> awaited() async {
await fetch();
}
Future<void> marked() async {
unawaited(fetch());
}
Future<void> assigned() async {
final future = fetch();
await future;
}
Future<int> returned() async {
return fetch();
}
Future<void> delayed() async {
Future.delayed(Duration.zero, () => 1);
}
Future<void> putIfAbsent(Map<String, Future<int>> cache) async {
cache.putIfAbsent('key', fetch);
}
Future<void> assignment(Api api) async {
Future<void> pending;
pending = api.save();
await pending;
}
FutureOr<int> maybeFetchOr() => 1;
// Like the official rule, `FutureOr` results are not reported in async bodies.
Future<void> callsFutureOr() async {
maybeFetchOr();
}
Future<void> annotatedLocalFunctions() async {
@awaitNotRequired
Future<void> handleError() async {}
handleError();
print('${handleError()}');
@meta.awaitNotRequired
Future<void> prefixed() async {}
prefixed();
}Configure unawaited-futures
Set its severity in falcon.json. See the configuration guide.
{
"linter": {
"rules": {
"style": {
"unawaited-futures": "error"
}
}
}
}Or silence one occurrence with a suppression comment; the reason is required.
// falcon-ignore lint/style/unawaited-futures: <reason>More style rules
- unintended-html-in-doc-comment
unintended_html_in_doc_commentrecommendedFlags angle-bracket text in doc comments that Markdown would render as an HTML tag.
- unnecessary-await-in-return
unnecessary_await_in_returnAvoid
awaiton a returnedFuturethe function's ownFuturealready covers. - unnecessary-brace-in-string-interps
unnecessary_brace_in_string_interpsrecommendedFlags
${x}string interpolations whose braces can be dropped. - unnecessary-breaks
unnecessary_breaksrecommendedFlags a trailing
breakin a switch case that already ends implicitly. - unnecessary-constructor-name
unnecessary_constructor_namerecommendedFlags a redundant
.newon constructor declarations and invocations. - unnecessary-final
unnecessary_finalDon't use
finalfor local variables and parameters. - unnecessary-late
unnecessary_laterecommendedFlags a redundant
latemodifier on an initialized static or top-level variable. - unnecessary-library-directive
unnecessary_library_directiverecommendedFlags a
librarydirective that has neither a doc comment nor annotations.