internalDispatch method Null safety
- Dispatcher dispatcher
override
Implementation
@override
Future<TResult> internalDispatch(Dispatcher dispatcher) {
onDispatch();
final completer = Completer<TResult>();
final invoker = rules.reversed.fold<VoidCallback>(
() {
if (dispatcher.cancelled) return;
body().then((value) {
if (dispatcher.cancelled) return;
completer.complete(value);
dispatcher.onDone(null, value);
}, onError: (error) {
if (dispatcher.cancelled) return;
completer.completeError(error);
dispatcher.onDone(error, null);
});
},
(next, m) => () {
if (dispatcher.cancelled) return;
m(dispatcher, next);
},
);
cubix.bindDispatcher(dispatcher);
invoker();
return completer.future;
}