dispose method
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;
}