dispose method

  1. @override
Future<void> dispose(
  1. AsyncDepAccess<V, D> access
)
override

Implementation

@override
Future<void> dispose(AsyncDepAccess<V, D> access) async {
  assert(
    _initialized,
    'Dispose of ${access.dep.runtimeType} has been called without initialization',
  );
  final value = super.getValue(access);
  try {
    _initialized = false;
    access.asyncDepObserver?.onDepStartDispose(access.dep);
    await access.disposeCallback(value);
    access.asyncDepObserver?.onDepDisposed(access.dep);
  } on Object catch (e, s) {
    access.asyncDepObserver?.onDepDisposeFailed(access.dep, e, s);
    rethrow;
  }
}