dispatch method
void
dispatch(
- TEvent event
Dispatch event
Implementation
void dispatch(TEvent event) {
final handler = _handlers[event.runtimeType];
if (handler == null) {
Logger.warning('No handler registered for event type: ${event.runtimeType}');
return;
}
try {
final newState = handler(value.state, event);
final newHistory = List<TEvent>.from(value.eventHistory);
newHistory.add(event);
// Limit history size
if (newHistory.length > _maxHistorySize) {
newHistory.removeAt(0);
}
Transaction.run(() {
value = value.copyWith(
state: newState,
lastEvent: event,
timestamp: DateTime.now(),
eventHistory: newHistory,
);
});
Logger.debug('Event dispatched: ${event.runtimeType}', event);
} catch (e) {
Logger.error('Error handling event: ${event.runtimeType}', e);
rethrow;
}
}