AutoPersistedBloc<S> constructor

AutoPersistedBloc<S>(
  1. PersistenceService _persistenceService, {
  2. S? startState,
  3. BlocMonitor<Bloc, dynamic> monitor = const BlocEventsPrinter(),
  4. Object tag = 0,
  5. Deserializer<S>? deserializer,
  6. Serializer<S>? serializer,
})

Implementation

AutoPersistedBloc(
  this._persistenceService, {
  S? startState,
  BlocMonitor monitor = const BlocEventsPrinter(),
  this.tag = 0,
  this.deserializer,
  this.serializer,
}) : super(
        initialState: null,
        monitor: monitor,
      ) {
  assert(_stateIsPrimitive || deserializer != null);
  assert(_stateIsPrimitive || serializer != null);

  _persistenceService.get(persistenceKey).then((lastState) {
    if (lastState == null) {
      if (startState != null) {
        // if initialState is null then the bloc's is already set to busy
        super.setState(startState, event: 'initializing');
      }
    } else {
      if (lastState is S) {
        super.setState(lastState, event: 'recovered_state');
      } else {
        assert(deserializer != null);

        super.setState(deserializer!(lastState), event: 'recovered_state');
      }
    }

    _initialization.complete();
  });
}