subscribe method
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);
}
};
}