registerListeners method
void
registerListeners(
- Object instance
)
Implementation
void registerListeners(Object instance) {
$AClass? clazz =
ArtifactAccessor.all
.expand((i) => i.artifactMirror.entries)
.where((i) => i.key == instance.runtimeType)
.firstOrNull
?.value;
if (clazz != null) {
for ($AMth i in clazz.annotatedMethods<EventHandler>()) {
Type? eventType = i.orderedParameterTypes.firstOrNull;
if (eventType == null || eventType == ArtifactEvent) {
throw Exception(
"Event handler methods must have at least one parameter which is the event object extending ArtifactEvent.",
);
}
listeners[eventType] ??= [];
listeners[eventType]!.add(
EventListener(
instance: instance,
annotation: i.annotationOf<EventHandler>()!,
handler:
// Link to method call of provided event
(e) => i(instance, MethodParameters(orderedParameters: [e])),
),
);
listeners[eventType]!.sort(
(a, b) => b.annotation.priority.index.compareTo(
a.annotation.priority.index,
),
);
}
}
}