register method
void Function()
register({
- required String pluginId,
- required TSlot slot,
- required SlotWidgetBuilder<
TData> builder, - int order = 0,
Registers one contribution and returns a disposer that unregisters it.
A given pluginId + slot pair may only be registered once.
Implementation
void Function() register({
required String pluginId,
required TSlot slot,
required SlotWidgetBuilder<TData> builder,
int order = 0,
}) {
if (pluginId.isEmpty) {
throw ArgumentError.value(pluginId, 'pluginId', 'Must not be empty.');
}
if (_registrations.any(
(registration) =>
registration.pluginId == pluginId && registration.slot == slot,
)) {
throw StateError(
'Slot contribution "$pluginId" is already registered for slot '
'"$slot".',
);
}
_registrations.add(
_SlotRegistration<TSlot, TData>(
pluginId: pluginId,
slot: slot,
order: order,
registrationOrder: _nextRegistrationOrder++,
builder: builder,
),
);
_notifyListeners();
var disposed = false;
return () {
if (disposed) return;
disposed = true;
unregister(pluginId: pluginId, slot: slot);
};
}