compare method
dynamic
compare(
- dynamic lhs,
- dynamic rhs
)
override
Implementation
@override
dynamic compare(dynamic lhs, dynamic rhs) {
if (lhs == null) {
return rhs == null ? 0 : null;
} else if (rhs == null) {
return null;
}
if (lhs is num) {
final rvalue = numberConvert(rhs);
if (rvalue != null) {
return (lhs).compareTo(rvalue);
}
} else if (lhs is String) {
final rvalue = stringConvert(rhs);
if (rvalue != null) {
return (lhs).compareTo(rvalue);
}
} else if (lhs is bool) {
final rvalue = booleanConvert(rhs);
return (lhs ? 1 : 0).compareTo(rvalue ? 1 : 0);
} else if (lhs.runtimeType == rhs.runtimeType) {
if (lhs is Map && const MapEquality().equals(lhs, rhs)) {
return 0;
} else if (lhs is List && const ListEquality().equals(lhs, rhs)) {
return 0;
} else if (lhs is Comparable) {
return (lhs).compareTo(rhs);
}
}
return null;
}