init method

void init(
  1. ErrorHandler errorHandler
)

Implementation

void init(ErrorHandler errorHandler) {
  this._errorHandler = errorHandler;
  addListener((state) {
    if (_persistance != null) {
      _hasUpdated = true;
    } else {
      _persistance = _store
          .setPersisted(_key, toJson(state))
          .whenComplete(_whenPersistenceComplete);
    }
  });
  _store.ready.then<void>((_) async {
    final rawV = await _store.getPersisted(_key);
    T v;

    if (rawV == null) {
      final init = await _initialiser();
      _persistance = _store
          .setPersisted(_key, toJson(init))
          .whenComplete(_whenPersistenceComplete);
      _notifier.nonNullState = init;
      v = init;
    } else {
      v = fromJson(rawV);
      _notifier.nonNullState = v;
    }

    _isReady = true;

    if (_getCompleter != null) {
      _getCompleter!.complete(v);
    }

    _readyCompleter.complete();

    return;
  }).catchError((e) {
    _error = e;
    final wrappedError = ErrorLoadingStorage(e);
    errorHandler(wrappedError);
    throw wrappedError;
  });
}