equalsValues method
Implementation
bool equalsValues(Object? value1, Object? value2) {
if (value1 == null) return value2 == null;
if (value2 == null) return false;
if (identical(value1, value2)) return true;
var equals = equalsEntityReferenceBase(value1, value2);
if (equals != null) return equals;
if (value1 == value2) return true;
equals = equalsValuesDateTime(value1, value2);
if (equals != null) return equals;
equals = equalsValuesTime(value1, value2);
if (equals != null) return equals;
equals = equalsValuesPrimitive(value1, value2);
if (equals != null) return equals;
equals = equalsValuesEnum(value1, value2);
if (equals != null) return equals;
var collection1 = TypeParser.isCollectionValue(value1) ||
value1.isEntityReferenceList ||
value1 is Uint8List ||
value1 is Int8List;
var collection2 = TypeParser.isCollectionValue(value2) ||
value2.isEntityReferenceList ||
value2 is Uint8List ||
value2 is Int8List;
if (collection1 && collection2) {
return isEqualsDeep(value1, value2, valueEquality: equalsValues);
}
value1 = value1.resolveEntityInstance ?? value1;
value2 = value2.resolveEntityInstance ?? value2;
var maybeEntity1 = !collection1 && !TypeParser.isPrimitiveValue(value1);
var maybeEntity2 = !collection2 && !TypeParser.isPrimitiveValue(value2);
var entityHandler1 = maybeEntity1 ? getEntityHandler(obj: value1) : null;
var entityHandler2 = maybeEntity2 ? getEntityHandler(obj: value2) : null;
if (entityHandler1 != null || entityHandler2 != null) {
Object? id1;
Object? id2;
if (entityHandler1 == entityHandler2) {
id1 = entityHandler1!.getID(value1);
id2 = entityHandler1.getID(value2);
} else if (entityHandler1 == null) {
id1 = value1;
id2 = entityHandler2!.getID(value2);
} else if (entityHandler2 == null) {
id1 = entityHandler1.getID(value1);
id2 = value2;
}
if (id1 == null && id2 == null) {
return isEqualsDeep(value1, value2);
} else {
return isEqualsDeep(id1, id2);
}
}
return false;
}