cancelBindings method

Future<void> cancelBindings()

Cancel all active listeners, timers and close the controllers. This does not dispose other disposables bound with bind.

dispose calls this function internally.

Implementation

Future<void> cancelBindings() {
  final ret = <Future>[];
  final subs = _subs;
  final uniques = _uniqueSubs;
  final ctrls = _ctrls;
  final timers = _timers;
  final utimers = _uniqueTimers;
  final listeners = _uniqueListeners;

  _subs = {};
  _uniqueSubs = {};
  _ctrls = {};
  _timers = {};
  _uniqueTimers = {};
  _uniqueListeners = {};

  for (final s in subs) {
    ret.add(s.cancel());
  }

  for (final s in uniques.values) {
    ret.add(s.cancel());
  }

  for (final tup in listeners.values) {
    tup.item1.removeListener(tup.item2);
  }

  for (final c in ctrls) {
    ret.add(c.close());
  }

  for (final t in timers) {
    t.cancel();
  }

  for (final t in utimers.values) {
    t.cancel();
  }

  return Future.wait(ret);
}