subscribe method

QueryDispose subscribe(
  1. void listener(
    1. QueryResult<T> result
    )
)

Subscribes to results and starts observer-driven fetching.

Implementation

QueryDispose subscribe(void Function(QueryResult<T> result) listener) {
  if (_disposed) throw StateError('QueryObserver is disposed.');
  final first = _listeners.isEmpty;
  if (first) _result = _createResult();
  _listeners.add(listener);
  if (first) {
    _query.addObserver(this);
    _updateTimers();
    if (_shouldFetchOnMount()) {
      unawaited(
        _query
            .fetch(options: _resolved, cancelRefetch: false)
            .then<void>((_) {}, onError: (_) {}),
      );
    }
  }
  listener(_result);
  return () {
    _listeners.remove(listener);
    if (_listeners.isEmpty) {
      _clearTimers();
      _query.removeObserver(this);
    }
  };
}