hashValue property

  1. @override
  2. @useResult
int get hashValue
override

This object's hash.

Objects where compareTo is 0 should have the same hashValue. A common mistake is to use an unrelated field when computing a hashValue.

Counterexample:

class Foo with Orderable<Foo> {
  final String key;
  final int value;

  Foo(String.key, this.value);

  @override
  int compareTo(Wrong other) => key.compareTo(other.key);

  @override
  int get hashValue => Object.hash(key, value);
}

Foo('a', 1) == Foo('a', 2); // true

Foo('a', 1).hashCode == Foo('a', 2).hashCode; // false, violates hash code contract

Implementation

@override
@useResult int get hashValue => runtimeType.hashCode ^ epochMicroseconds;