EventRule<T> constructor
EventRule<T> (
- Event<
T> event, { - required List<
EventListener< targets,T> >
An EventBus Subscriber
EventRule subscribe to EventBus's Event to call corresponding EventListener's callbacks.
Example
final event1 = Event<int>("int");
final rule = EventRule<int>(event1, targets: [
// On Receiving `event1` call `onEvent`
// with `payload` of type [int]
EventListener(
(payload) {
print("integer event: $payload");
},
),
]);
// NOTE: DO NOT FORGOT TO CANCEL THE SUBSCRIPTION
dispose() {
rule.cancel();
}
....
// Release Event
EventBus.emit(event1.createPayload(100))
// prints "integer event: 100"
See Also:
- EventListener : An EventListener which calls its onEvent.
- OneOffEventListener : An EventListener which only calls its onEvent one time.
- DebouncedEventListener : An EventListenr which delays its calls to prevent frequent calls.
- EventRule : An EventLoop Subscriber
Implementation
EventRule(
this.event, {
required List<EventListener<T>> targets,
}) {
final stream = EventBus._instance._stream.stream;
_subscription = stream.listen(
(_event) {
if (_event.name == event.name && _event.value is T) {
for (var listener in targets) {
listener(_event.value as T);
}
}
},
);
}