Defines a one-to-many dependency so when one object changes state, all dependents are notified.
The classic pub/sub pattern.
class EventEmitter<T> {
final List<void Function(T)> _listeners = [];
void on(void Function(T) listener) => _listeners.add(listener);
void off(void Function(T) listener) => _listeners.remove(listener);
void emit(T event) {
for (final listener in _listeners) {
listener(event);
}
}
}
// Usage
final prices = EventEmitter<double>();
prices.on((price) => print('Display updated: \$$price'));
prices.on((price) => print('Alert checked: \$$price'));
prices.emit(29.99);
// Display updated: $29.99
// Alert checked: $29.99