bindAction method

Dispatcher bindAction(
  1. ActionBase action, {
  2. CancelToken? cancelToken,
})

Implementation

Dispatcher bindAction(ActionBase action, {CancelToken? cancelToken}) {
  if (!action.canDispatch(this)) {
    throw IncompatibleException(
        'Cannot dispatch this action. The Action is not compatible with this Cubix');
  }
  var actionData = _data[action.runtimeType];
  if (actionData == null) {
    _data[action.runtimeType] = actionData = {};
  }

  final dispatcher = Dispatcher(
    cubix: this,
    dispatching: dispatchers,
    cancelToken: cancelToken ?? CancelToken(),
    action: action,
    data: actionData,
  );
  action.onBind(dispatcher);

  if (_injected) {
    action.inject(resolver);
  }

  action.onInit();

  _dispatchEmitter.emit(action);
  onDispatch(action);
  return dispatcher;
}