unawaited_ futures
Detalhes sobre o diagnóstico 'unawaited_futures' produzido pelo analisador do Dart.
Missing an 'await' for the 'Future' computed by this expression.
Missing an 'await' for the 'FutureOr' computed by this expression.
Descrição
#
O analisador produz este diagnóstico em uma expressão com tipo Future ou FutureOr, mas apenas em alguns casos específicos:
- quando a expressão é ela mesma uma instrução (como
f();), - quando a expressão faz parte de uma cascata (como
C()..f()), - quando a expressão é uma interpolação de String (como
'${f()}').
O analisador só produz este diagnóstico em expressões dentro de uma função async ou async*.
As duas correções comuns são usar await na expressão ou, se ela for um Future
(e não um FutureOr), envolver a expressão em uma chamada de unawaited().
Exemplo
#
O código a seguir produz este diagnóstico porque a função g retorna um future, mas o future não é aguardado com
await:
Future<void> f() async {
g();
}
Future<int> g() => Future.value(0);
Correções comuns
#
Se o future precisa ser concluído antes que o código seguinte seja executado, então adicione um await
antes da invocação:
Future<void> f() async {
await g();
}
Future<int> g() => Future.value(0);
Se o Future não precisa ser concluído antes que o código seguinte seja executado, então envolva a invocação que retorna o
Future em uma invocação da função unawaited:
import 'dart:async';
Future<void> f() async {
unawaited(g());
}
Future<int> g() => Future.value(0);
Salvo indicação em contrário, a documentação neste site reflete Dart 3.13.7. Relatar um problema.
Encontrou essa página sem tradução ou que precisa de correção? Abra uma issue e nos ajude a manter esse site em PT-BR para ajudar pessoas como você.