operator == method
The equality operator.
The default behavior for all Objects is to return true if and
only if this object and other
are the same object.
Override this method to specify a different equality relation on a class. The overriding method must still be an equivalence relation. That is, it must be:
-
Total: It must return a boolean for all arguments. It should never throw.
-
Reflexive: For all objects
o
,o == o
must be true. -
Symmetric: For all objects
o1
ando2
,o1 == o2
ando2 == o1
must either both be true, or both be false. -
Transitive: For all objects
o1
,o2
, ando3
, ifo1 == o2
ando2 == o3
are true, theno1 == o3
must be true.
The method should also be consistent over time, so whether two objects are equal should only change if at least one of the objects was modified.
If a subclass overrides the equality operator, it should override the hashCode method as well to maintain consistency.
Implementation
@override
bool operator ==(Object other) {
final bool isSameType = other is BKTEvaluationDetails<T>;
if (isSameType == false) {
return false;
}
final otherAsBKTEvaluationDetails = other as BKTEvaluationDetails<T>;
final bool isRuntimeTypeEqual =
runtimeType == otherAsBKTEvaluationDetails.runtimeType;
final bool isFeatureIdEqual =
featureId == otherAsBKTEvaluationDetails.featureId;
final bool isFeatureVersionEqual =
featureVersion == otherAsBKTEvaluationDetails.featureVersion;
final bool isUserIdEqual = userId == otherAsBKTEvaluationDetails.userId;
final bool isVariationIdEqual =
variationId == otherAsBKTEvaluationDetails.variationId;
final bool isVariationNameEqual =
variationName == otherAsBKTEvaluationDetails.variationName;
bool isVariationValueEqual =
variationValue == otherAsBKTEvaluationDetails.variationValue;
final bool isReasonEqual = reason == otherAsBKTEvaluationDetails.reason;
if (variationValue is Map) {
final variationValueMap = variationValue as Map;
final otherVariationValueMap = otherAsBKTEvaluationDetails.variationValue as Map;
isVariationValueEqual = mapEquals(variationValueMap, otherVariationValueMap);
}
return isSameType &&
isRuntimeTypeEqual &&
isFeatureIdEqual &&
isFeatureVersionEqual &&
isUserIdEqual &&
isVariationIdEqual &&
isVariationNameEqual &&
isVariationValueEqual &&
isReasonEqual;
}