Pular para o conteúdo principal

overridden_fields

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

Field overrides a field inherited from '{0}'.

Descrição

#

O analisador emite este diagnóstico quando uma classe define um campo que sobrescreve um campo de uma superclasse.

Sobrescrever um campo com outro campo faz com que o objeto tenha dois campos distintos, mas, como os campos têm o mesmo nome, apenas um deles pode ser referenciado em um determinado escopo. Isso pode levar a confusão, em que uma referência a um dos campos pode ser confundida com uma referência ao outro.

Exemplo

#

O código a seguir produz este diagnóstico porque o campo f em B oculta o campo f em A:

dart
class A {
  int f = 1;
}
​
class B extends A {
  @override
  int f = 2;
}

Correções comuns

#

Se os dois campos representam a mesma propriedade, então remova o campo da subclasse:

dart
class A {
  int f = 1;
}
​
class B extends A {}

Se os dois campos devem ser distintos, então renomeie um dos campos:

dart
class A {
  int f = 1;
}
​
class B extends A {
  int g = 2;
}

Se os dois campos estão relacionados de alguma forma, mas não podem ser o mesmo, então encontre outra forma de implementar a semântica de que você precisa.

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