Pular para o conteúdo principal

invalid_override

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

'{0}.{1}' ('{2}') isn't a valid override of '{3}.{1}' ('{4}').

The setter '{0}.{1}' ('{2}') isn't a valid override of '{3}.{1}' ('{4}').

Descrição

#

O analisador produz este diagnóstico quando um membro de uma classe é encontrado sobrescrevendo um membro de um supertipo, e a sobrescrita não é válida. Uma sobrescrita é válida se todas as condições a seguir forem verdadeiras:

  • Ela permite todos os argumentos permitidos pelo membro sobrescrito.
  • Ela não exige nenhum argumento que não seja exigido pelo membro sobrescrito.
  • O tipo de cada parâmetro do membro sobrescrito é atribuível ao parâmetro correspondente da sobrescrita.
  • O tipo de retorno da sobrescrita é atribuível ao tipo de retorno do membro sobrescrito.

Exemplo

#

O código a seguir produz este diagnóstico porque o tipo do parâmetro s (String) não é atribuível ao tipo do parâmetro i (int):

dart
class A {
  void m(int p) {}
}
​
class B extends A {
  @override
  void m(String p) {}
}

Correções comuns

#

Se o método inválido se destina a sobrescrever o método da superclasse, então altere-o para que esteja de acordo:

dart
class A {
  void m(int p) {}
}
​
class B extends A {
  @override
  void m(int p) {}
}

Se ele não se destina a sobrescrever o método da superclasse, então renomeie-o:

dart
class A {
  void m(int p) {}
}
​
class B extends A {
  void m2(String p) {}
}

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