What is the difference between == and identical in Dart, and what does == fall back to?
In Dart, identical(a, b) asks whether two references point to the same object, while a == b calls the left operand's operator == method, which falls back to Object.== (identity) unless the class overrides it. Null checks, const canonicalization, numbers, NaN, records, hashCode, and the places where the VM and dart2js disagree, verified on Dart 3.12.2.