Pular para o conteúdo principal

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:

dart
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:

dart
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:

dart
import 'dart:async';
​
Future<void> f() async {
  unawaited(g());
}
​
Future<int> g() => Future.value(0);

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ê.