hash_ and_ equals
Saiba mais sobre a regra de lint hash_and_equals.
Sempre sobrescreva hashCode ao sobrescrever ==.
Detalhes
#
FAÇA sobrescrever hashCode ao sobrescrever ==, e prefira sobrescrever
== ao sobrescrever hashCode.
Todo objeto em Dart tem um hashCode. Tanto o operador == quanto a propriedade
hashCode dos objetos precisam ser consistentes para que uma implementação comum de mapa de hash funcione corretamente. Portanto, ao sobrescrever
==, o hashCode também deve ser sobrescrito para manter a consistência. Da mesma forma, se
hashCode for sobrescrito, == também deve ser.
RUIM:
class Bad {
final int value;
Bad(this.value);
@override
bool operator ==(Object other) => other is Bad && other.value == value;
}
BOM:
class Better {
final int value;
Better(this.value);
@override
bool operator ==(Object other) =>
other is Better &&
other.runtimeType == runtimeType &&
other.value == value;
@override
int get hashCode => value.hashCode;
}
Ativar
#
Para ativar a regra hash_and_equals, adicione hash_and_equals em
linter > rules no seu arquivo analysis_options.yaml:
linter:
rules:
- hash_and_equals
Se você usa a sintaxe de mapa YAML para configurar as regras de lint,
adicione hash_and_equals: true em linter > rules:
linter:
rules:
hash_and_equals: 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ê.