non_ generative_ implicit_ constructor
Detalhes sobre o diagnóstico 'non_generative_implicit_constructor' produzido pelo analisador do Dart.
The unnamed constructor of superclass '{0}' (called by the default constructor of '{1}') must be a generative constructor, but factory found.
Descrição
#O analisador emite este diagnóstico quando uma classe tem um construtor generativo implícito e a superclasse tem um construtor de fábrica explícito sem nome. O construtor implícito da subclasse invoca implicitamente o construtor sem nome da superclasse, mas construtores generativos só podem invocar outro construtor generativo, não um construtor de fábrica.
Exemplo
#
O código a seguir produz este diagnóstico porque o construtor implícito de
B invoca o construtor sem nome de A, mas o construtor em
A é um
construtor de fábrica, quando um construtor generativo é necessário:
class A {
factory A() => throw 0;
A.named();
}
class B extends A {}
Correções comuns
#Se o construtor sem nome da superclasse puder ser um construtor generativo, então altere-o para um construtor generativo:
class A {
A();
A.named();
}
class B extends A {}
Se o construtor sem nome não puder ser um construtor generativo e existirem outros construtores generativos na superclasse, então invoque explicitamente um deles:
class A {
factory A() => throw 0;
A.named();
}
class B extends A {
B() : super.named();
}
Se não houver construtores generativos que possam ser usados e nenhum puder ser adicionado, então implemente a superclasse em vez de estendê-la:
class A {
factory A() => throw 0;
A.named();
}
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ê.