compare<T extends Model> method
int
compare<
T extends Model>( - T a,
- T b
)
Implementation
int compare<T extends Model>(T a, T b) {
final fieldName = getFieldName(field);
Object? valueA;
Object? valueB;
// TODO(Jordan-Nelson): Remove try/catch at next major version bump
try {
valueA = a.toMap()[fieldName];
valueB = b.toMap()[fieldName];
} on UnimplementedError {
valueA = a.toJson()[fieldName];
valueB = b.toJson()[fieldName];
}
final orderMultiplier = order == QuerySortOrder.ascending ? 1 : -1;
if (valueA == null || valueB == null) {
return orderMultiplier * _compareNull(valueA, valueB);
} else if (valueA is bool && valueB is bool) {
return orderMultiplier * _compareBool(valueA, valueB);
} else if (valueA is Comparable && valueB is Comparable) {
return orderMultiplier * valueA.compareTo(valueB);
}
throw const ModelQueryException(
'A non-comparable field was used as a QuerySortBy',
);
}