init method
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;
});
}