doRegister method

  1. @protected
void doRegister()
inherited

Implementation

@protected
void doRegister() {
  if (_registering) {
    _dirty = true;
    return;
  }
  _registering = true;
  for (final e in _entries.values) e.used = false;
  final gen = ++_generation;
  final result = registerObservers();
  void complete() {
    if (!_registering || gen != _generation) return;
    _entries.removeWhere((key, entry) {
      if (!entry.used) {
        entry.disposable.dispose();
        return true;
      }
      return false;
    });
    _registering = false;
    if (_dirty) {
      _dirty = false;
      doRegister();
    }
  }

  result is Future ? result.whenComplete(complete) : complete();
}