avoid_ equals_ and_ hash_ code_ on_ mutable_ classes
Saiba mais sobre a regra de lint avoid_equals_and_hash_code_on_mutable_classes.
Evite sobrescrever operator == e hashCode em classes que não estão marcadas com @immutable.
Detalhes
#Do Effective Dart:
EVITE sobrescrever operator == e hashCode em classes que não estão marcadas
com @immutable.
Se uma classe não é imutável, sobrescrever operator == e hashCode pode levar
a comportamentos imprevisíveis e indesejados quando ela é usada em coleções.
RUIM:
class B {
String key;
const B(this.key);
@override
operator ==(other) => other is B && other.key == key;
@override
int get hashCode => key.hashCode;
}
BOM:
@immutable
class A {
final String key;
const A(this.key);
@override
operator ==(other) => other is A && other.key == key;
@override
int get hashCode => key.hashCode;
}
NOTA: A regra verifica o uso da anotação @immutable e será acionada mesmo que a
classe, de outra forma, não seja mutável. Assim:
RUIM:
class C {
final String key;
const C(this.key);
@override
operator ==(other) => other is C && other.key == key;
@override
int get hashCode => key.hashCode;
}
Ativar
#
Para ativar a regra avoid_equals_and_hash_code_on_mutable_classes, adicione avoid_equals_and_hash_code_on_mutable_classes
em
linter > rules no seu arquivo analysis_options.yaml:
linter:
rules:
- avoid_equals_and_hash_code_on_mutable_classes
Se você usa a sintaxe de mapa YAML para configurar as regras de lint,
adicione avoid_equals_and_hash_code_on_mutable_classes: true em linter > rules:
linter:
rules:
avoid_equals_and_hash_code_on_mutable_classes: true
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ê.