discarded_futures
Don't invoke asynchronous functions in non-async
blocks.
Details
#Making asynchronous calls in non-async
functions is usually the sign of a programming error. In general these functions should be marked async
and such futures should likely be awaited (as enforced by unawaited_futures
).
DON'T invoke asynchronous functions in non-async
blocks.
BAD:
void recreateDir(String path) {
deleteDir(path);
createDir(path);
}
Future<void> deleteDir(String path) async {}
Future<void> createDir(String path) async {}
GOOD:
Future<void> recreateDir(String path) async {
await deleteDir(path);
await createDir(path);
}
Future<void> deleteDir(String path) async {}
Future<void> createDir(String path) async {}
Enable
#To enable the discarded_futures
rule, add discarded_futures
under linter > rules in your analysis_options.yaml
file:
linter:
rules:
- discarded_futures
If you're instead using the YAML map syntax to configure linter rules, add discarded_futures: true
under linter > rules:
linter:
rules:
discarded_futures: true
Unless stated otherwise, the documentation on this site reflects Dart 3.6.0. Page last updated on 2025-01-27. View source or report an issue.