dispose method

Future<void> dispose()
inherited

Cancel all active listeners, timers, close the controllers and disposes other disposables bound with bind.

You should not use this class after it's disposal. If you only want to cancel/clear stuff, use cancelBindings.

Implementation

Future<void> dispose() async {
  _canceling = true;

  final ret = <Future>[];

  if (_parent != null) {
    _parent!._disposables.remove(this);
  }

  final disposables = _disposables;
  _disposables = {};

  for (var disposable in disposables) {
    ret.add(disposable.dispose());
  }

  assert(_disposables.isEmpty);

  ret.add(cancelBindings());

  await Future.wait(ret);
  _canceling = false;
}