Pular para o conteúdo principal

positional_super_formal_parameter_with_positional_argument

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

Positional super parameters can't be used when the super constructor invocation has a positional argument.

Descrição

#

O analisador emite este diagnóstico quando alguns, mas não todos, os parâmetros posicionais fornecidos ao construtor da superclasse usam um parâmetro super.

Parâmetros super posicionais são associados aos parâmetros posicionais do construtor da superclasse pelo seu índice. Ou seja, o primeiro parâmetro super é associado ao primeiro parâmetro posicional do construtor da superclasse, o segundo ao segundo, e assim por diante. O mesmo vale para os argumentos posicionais. Ter parâmetros super posicionais e argumentos posicionais ao mesmo tempo significa que há dois valores associados ao mesmo parâmetro do construtor da superclasse, e por isso não é permitido.

Exemplo

#

O código a seguir produz este diagnóstico porque o construtor B.new usa um parâmetro super para passar um dos parâmetros posicionais obrigatórios ao construtor da superclasse em A, mas passa explicitamente o outro na invocação do construtor da superclasse:

dart
class A {
  A(int x, int y);
}
​
class B extends A {
  B(int x, super.y) : super(x);
}

Correções comuns

#

Se todos os parâmetros posicionais puderem ser parâmetros super, então converta os parâmetros posicionais normais em parâmetros super:

dart
class A {
  A(int x, int y);
}
​
class B extends A {
  B(super.x, super.y);
}

Se alguns parâmetros posicionais não puderem ser parâmetros super, então converta os parâmetros super em parâmetros normais:

dart
class A {
  A(int x, int y);
}
​
class B extends A {
  B(int x, int y) : super(x + 1, y);
}

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