isEqual function

bool isEqual(
  1. Object? a,
  2. Object? b
)

Implementation

bool isEqual(Object? a, Object? b) {
  if (a == null || b == null) return a == b;
  if (a.runtimeType != b.runtimeType) return false;
  // Map对比
  if (a is Map) {
    if (a.keys.length != (b as Map).keys.length) return false;
    for (final key in a.keys) {
      if (!b.containsKey(key) || !isEqual(a[key], b[key])) {
        return false;
      }
    }
    return true;
  }
  // List对比
  if (a is List) {
    if (a.length != (b as List).length) return false;
    for (int i = 0; i < a.length; i++) {
      if (!isEqual(a[i], b[i])) return false;
    }
    return true;
  }
  // 基本类型直接比较
  return a == b;
}