runOnDispose method

  1. @protected
  2. @visibleForOverriding
  3. @mustCallSuper
void runOnDispose()

Executes the Ref.onDispose listeners previously registered, then clear the list of listeners.

Implementation

@protected
@visibleForOverriding
@mustCallSuper
void runOnDispose() {
  if (!_mounted) return;
  _mounted = false;

  while (_listenedProviderSubscriptions.isNotEmpty) {
    _listenedProviderSubscriptions.first.close();
  }

  _onDisposeListeners?.forEach(runGuarded);

  for (final observer in _container.observers) {
    runBinaryGuarded(
      observer.didDisposeProvider,
      _origin,
      _container,
    );
  }

  _onDisposeListeners = null;
  _onCancelListeners = null;
  _onResumeListeners = null;
  _onAddListeners = null;
  _onRemoveListeners = null;
  _onChangeSelfListeners = null;
  _onErrorSelfListeners = null;
  _didCancelOnce = false;
}