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:
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:
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:
Stream<int> f() async* {
yield 3;
}
Se o método deve ser um gerador, use yield para retornar um valor:
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):
int f() {
return 3;
}
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ê.