What is the difference between == and === in Dart?

Dart supports == for equality and identical(a, b) for identity. Dart no longer supports the === syntax.

Use == for equality when you want to check if two objects are “equal”. You can implement the == method in your class to define what equality means. For example:

class Person {
  String ssn;
  String name;

  Person(this.ssn, this.name);

  // Define that two persons are equal if their SSNs are equal
  bool operator ==(other) {
    return (other is Person && other.ssn == ssn);
  }
}

main() {
  var bob =  Person('111', 'Bob');
  var robert =  Person('111', 'Robert');

  print(bob == robert); // true

  print(identical(bob, robert)); // false, because these are two different instances
}

Note that the semantics of a == b are:

  • If either a or b are null, return identical(a, b)
  • Otherwise, return a.==(b)

Use identical(a, b) to check if two variables reference the same instance. The identical function is a top-level function found in dart:core.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)