unwatch<T> method

void unwatch<T>(
  1. SaveProvider<T> provider
)

Unregister the observables.

Implementation

void unwatch<T>(SaveProvider<T> provider) {
  final key = provider.key;
  final obs = repo.getObservable<T>(key);

  assert(obs != null, '$T has never been accessed before');

  obs!.release();
  _subscriptions[key]?.cancel();
  _subscriptions.remove(key);
  _providers.remove(key);

  if (!provider.autoDispose || !obs.canDispose()) {
    return;
  }

  repo.removeObservable(key);

  if (!obs.initialized) {
    return;
  }

  provider.dispose(obs.state);
  obs.dispose();
}