Pular para o conteúdo principal

return_in_generator

Detalhes sobre o diagnóstico 'return_in_generator' produzido pelo analisador do Dart.

Can't return a value from a generator function that uses the 'async*' or 'sync*' modifier.

Descrição

#

O analisador emite este diagnóstico quando uma função geradora (cujo corpo é marcado com async* ou sync*) usa uma instrução return para retornar um valor, ou retorna um valor implicitamente por usar =>. Em qualquer um desses casos, deve-se usar yield no lugar de return.

Exemplos

#

O código a seguir gera este diagnóstico porque o método f é um gerador e usa return para retornar um valor:

dart
Iterable<int> f() sync* {
  return 3;
}

O código a seguir gera este diagnóstico porque a função f é um gerador e retorna um valor implicitamente:

dart
Stream<int> f() async* => 3;

Correções comuns

#

Se a função usa => para o corpo, converta-a para um corpo de função em bloco e use yield para retornar um valor:

dart
Stream<int> f() async* {
  yield 3;
}

Se o método deve ser um gerador, use yield para retornar um valor:

dart
Iterable<int> f() sync* {
  yield 3;
}

Se o método não deve ser um gerador, remova o modificador do corpo (ou use async se você estiver retornando um future):

dart
int f() {
  return 3;
}

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