In Dart, you must override either both or neither of the operator `==` and `hashCode()` method in order to keep the contract between the two:
- Whenever the `hashCode` method is invoked on the same object more than once, it must consistently return the same integer, provided no information used in `==` comparisons on the object is modified.
- If two objects are equal according to the `==` operator, then calling the `hashCode` method on each of the two objects must produce the same integer result.
By overriding only one of the two methods with a non-trivial implementation, this contract is almost certainly broken.