Pular para o conteúdo principal

non_sync_factory

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

Factory bodies can't use 'async', 'async*', or 'sync*'.

Descrição

#

O analisador emite este diagnóstico quando o corpo de um construtor de fábrica é marcado com async, async* ou sync*. Todos os construtores, incluindo os construtores de fábrica, devem retornar uma instância da classe em que são declarados, e não um Future, Stream ou Iterator.

Exemplo

#

O código a seguir produz este diagnóstico porque o corpo do construtor de fábrica é marcado com async:

dart
class C {
  factory C() async {
    return C._();
  }
​
  C._();
}

Correções comuns

#

Se o membro precisar ser declarado como construtor de fábrica, então remova a palavra-chave que aparece antes do corpo:

dart
class C {
  factory C() {
    return C._();
  }
​
  C._();
}

Se o membro precisar retornar algo diferente de uma instância da classe que o envolve, então torne o membro um método estático:

dart
class C {
  static Future<C> m() async {
    return C._();
  }
​
  C._();
}

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