Pular para o conteúdo principal

no_generative_constructors_in_superclass

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

The class '{0}' can't extend '{1}' because '{1}' only has factory constructors (no generative constructors), and '{0}' has at least one generative constructor.

Descrição

#

O analisador emite este diagnóstico quando uma classe que tem pelo menos um construtor generativo (explícito ou implícito) tem uma superclasse que não tem nenhum construtor generativo. Todo construtor generativo, exceto o definido em Object, invoca, explícita ou implicitamente, um dos construtores generativos da sua superclasse.

Exemplo

#

O código a seguir gera este diagnóstico porque a classe B tem um construtor generativo implícito que não pode invocar um construtor generativo de A, porque A não tem nenhum construtor generativo:

dart
class A {
  factory A.none() => throw '';
}
​
class B extends A {}

Correções comuns

#

Se a superclasse deve ter um construtor generativo, então adicione um:

dart
class A {
  A();
  factory A.none() => throw '';
}
​
class B extends A {}

Se a subclasse não deve ter um construtor generativo, então remova-o adicionando um construtor factory:

dart
class A {
  factory A.none() => throw '';
}
​
class B extends A {
  factory B.none() => throw '';
}

Se a subclasse precisar ter um construtor generativo, mas a superclasse não puder ter um, então implemente a superclasse:

dart
class A {
  factory A.none() => throw '';
}
​
class B implements A {}

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