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:
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:
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:
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:
class A {
factory A.none() => throw '';
}
class B implements A {}
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ê.