sort static method
List<MatchedProductV2>
sort(
- List<
Product> products, - ProductPreferencesManager productPreferencesManager
Implementation
static List<MatchedProductV2> sort(
final List<Product> products,
final ProductPreferencesManager productPreferencesManager,
) {
final List<MatchedProductV2> result = <MatchedProductV2>[];
int i = 0;
for (final Product product in products) {
final MatchedProductV2 matchedProduct =
MatchedProductV2(product, productPreferencesManager);
matchedProduct._initialOrder = i++;
result.add(matchedProduct);
}
result.sort(
(MatchedProductV2 a, MatchedProductV2 b) {
late int compare;
// Highest score first
compare = b.score.compareTo(a.score);
if (compare != 0) {
return compare;
}
// Matching products second
compare = (b.status == MatchedProductStatusV2.DOES_NOT_MATCH ? 0 : 1) -
(a.status == MatchedProductStatusV2.DOES_NOT_MATCH ? 0 : 1);
if (compare != 0) {
return compare;
}
// Initial order third
return a._initialOrder.compareTo(b._initialOrder);
},
);
return result;
}