resolve method
Resolves contributions for slot in deterministic order.
Implementation
List<ResolvedSlotContribution<TSlot, TData>> resolve(TSlot slot) {
final matches =
_registrations
.where((registration) => registration.slot == slot)
.toList()
..sort((left, right) {
final orderCompare = left.order.compareTo(right.order);
if (orderCompare != 0) return orderCompare;
final registrationCompare = left.registrationOrder.compareTo(
right.registrationOrder,
);
if (registrationCompare != 0) return registrationCompare;
return left.pluginId.compareTo(right.pluginId);
});
return matches
.map(
(registration) => ResolvedSlotContribution<TSlot, TData>._(
pluginId: registration.pluginId,
slot: registration.slot,
order: registration.order,
registrationOrder: registration.registrationOrder,
builder: registration.builder,
),
)
.toList(growable: false);
}