dispatch method
Implementation
Future<void> dispatch(Event event) {
NextMiddleware<TState> next = (notifier, event) => Stream<TState>.empty();
for (var middleware in middlewares.reversed) {
final NextMiddleware<TState> previousNext = next;
next = (context, event) => middleware(context, event, previousNext);
}
return next(this, event).forEach((newState) => this.state = newState);
}