dispose method

  1. @override
  2. @mustCallSuper
Future<void> dispose()
override

Disposes all dependencies in the queue in reverse order.

This method sets the status to DepsNodeStatus.disposing, processes each batch of dependencies in reverse order, and then sets the status to DepsNodeStatus.disposed.

Each batch of dependencies is disposed of concurrently using Future.wait.

Implementation

@override
@mustCallSuper
Future<void> dispose() async {
  _setStatus(DepsNodeStatus.disposing);
  for (final initializeBatch in initializeQueue.reversed) {
    final futures = <Future>[];

    _getDepsLock = true;
    for (final obj in initializeBatch) {
      futures.add(obj().dispose());
    }
    _getDepsLock = false;

    await Future.wait(futures);
  }
  _setStatus(DepsNodeStatus.disposed);
  _statusController.close();
}