dispose method

void dispose({
  1. bool purgeZeroize = false,
})

Disposes this container, firing all onDispose callbacks and disposing all managed nodes.

If purgeZeroize is true, all managed nodes and zeroizable objects are zeroized before container references are cleared.

Calling dispose on an already-disposed container is a safe no-op (idempotent).

Implementation

void dispose({bool purgeZeroize = false}) {
  if (_isDisposed) {
    return;
  }

  _isDisposed = true;

  for (final ref in _activeRefs.toList(growable: false)) {
    ref._dispose();
  }

  for (final node in _nodes.values.toList(growable: false)) {
    node.dispose(purgeZeroize: purgeZeroize);
  }

  _activeRefs.clear();
  _refs.clear();
  _nodes.clear();
}