registerState<S> method

void registerState <S>(
  1. {@required String stateName,
  2. @required S initialState,
  3. @required MapActionToStateCallback<S> mapActionToState}
)

Implementation

void registerState<S>(
    {@required String stateName,
    @required S initialState,
    @required MapActionToStateCallback<S> mapActionToState}) {
  unregisterState(stateName: stateName);
  _store.value[stateName] = initialState;
  _store.add(_store.value);
  dispatch(Action(type: 'registerState($stateName)'));
  void emitState<S>(S state) {
    if (_store.value[stateName] != state) {
      _store.value[stateName] = state;
      _store.add(_store.value);
    }
  }

  _stateSubscriptions[stateName] = _dispatcher.listen((action) {
    mapActionToState(_store.value[stateName], action, emitState);
  });
}