Pular para o conteúdo principal

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:

dart
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:

dart
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:

dart
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:

dart
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, '');
}

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