Pular para o conteúdo principal

non_generative_constructor

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

The generative constructor '{0}' is expected, but a factory was found.

Descrição

#

O analisador emite este diagnóstico quando a lista de inicializadores de um construtor invoca um construtor da superclasse, e o construtor invocado é um construtor de fábrica. Somente um construtor generativo pode ser invocado na lista de inicializadores.

Exemplo

#

O código a seguir produz este diagnóstico porque a invocação do construtor super.one() está invocando um construtor de fábrica:

dart
class A {
  factory A.one() = B;
  A.two();
}
​
class B extends A {
  B() : super.one();
}

Correções comuns

#

Altere a invocação do super para invocar um construtor generativo:

dart
class A {
  factory A.one() = B;
  A.two();
}
​
class B extends A {
  B() : super.two();
}

Se o construtor generativo for o construtor sem nome, e se nenhum argumento for passado a ele, então você pode remover a invocação do super.

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