multiple_ super_ initializers
Detalhes sobre o diagnóstico 'multiple_super_initializers' produzido pelo analisador do Dart.
A constructor can have at most one 'super' initializer.
Descrição
#O analisador emite este diagnóstico quando a lista de inicializadores de um construtor contém mais de uma invocação de um construtor da superclasse. A lista de inicializadores precisa ter exatamente uma chamada desse tipo, que pode ser explícita ou implícita.
Exemplo
#
O código a seguir gera este diagnóstico porque a lista de inicializadores do
construtor de B invoca tanto o construtor one quanto o construtor
two da
superclasse A:
class A {
int? x;
String? s;
A.one(this.x);
A.two(this.s);
}
class B extends A {
B() : super.one(0), super.two('');
}
Correções comuns
#Se um dos construtores da superclasse inicializar a instância por completo, então remova o outro:
class A {
int? x;
String? s;
A.one(this.x);
A.two(this.s);
}
class B extends A {
B() : super.one(0);
}
Se a inicialização feita por um dos construtores da superclasse puder ser realizada no corpo do construtor, então remova a sua invocação de superclasse e faça a inicialização no corpo:
class A {
int? x;
String? s;
A.one(this.x);
A.two(this.s);
}
class B extends A {
B() : super.one(0) {
s = '';
}
}
Se a inicialização só puder ser feita em um construtor da superclasse, então adicione um novo construtor ou modifique um dos construtores existentes para que exista um construtor que permita que toda a inicialização necessária ocorra em uma única chamada:
class A {
int? x;
String? s;
A.one(this.x);
A.two(this.s);
A.three(this.x, this.s);
}
class B extends A {
B() : super.three(0, '');
}
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ê.