ObservableQuery<TParsed> class

An Observable/Stream-based API for both queries and mutations.

Returned from GraphQLClient.watchQuery for use in reactive programming, for instance in graphql_flutter widgets. It is modelled closely after Apollo's ObservableQuery

ObservableQuery's core api/usage is to fetchResults, then listen to the stream. fetchResults will be called on instantiation if options.eagerlyFetchResults is set, which in turn defaults to options.fetchResults.

Beyond that, ObservableQuery is a bit of a kitchen sink:

  • There are refetch and fetchMore methods for fetching more results
  • An onData method for registering callbacks (namely for mutations)
  • lifecycle for tracking polling, side effect, an inflight execution state
  • latestResult – the most recent result from this operation

And a handful of internally leveraged methods.

Constructors

ObservableQuery({required QueryManager queryManager, required WatchQueryOptions<TParsed> options})

Properties

controller StreamController<QueryResult<TParsed>>
getter/setter pair
hashCode int
The hash code for this object.
no setterinherited
isCurrentlyPolling bool
no setter
isRebroadcastSafe bool
Whether it is safe to rebroadcast results due to cache changes based on policies and lifecycle.
no setter
isRefetchSafe bool
no setter
latestResult QueryResult<TParsed>?
The most recently seen result from this operation's stream
getter/setter pair
lifecycle QueryLifecycle
getter/setter pair
optimisticResult Object?
no getter
options WatchQueryOptions<TParsed>
getter/setter pair
queryId String
The identity of this query within the QueryManager
final
queryManager QueryManager
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
scheduler → QueryScheduler?
no setter
sideEffectsArePending bool
onData callbacks have het to be run
no setter
stream Stream<QueryResult<TParsed>>
no setter
variables Map<String, dynamic>
no getter

Methods

addResult(QueryResult<TParsed> result, {bool fromRebroadcast = false}) → void
Add a result to the stream unless it was created before latestResult.
close({bool force = false, bool fromManager = false}) FutureOr<QueryLifecycle>
Closes the query or mutation, or else queues it for closing.
fetchMore(FetchMoreOptions fetchMoreOptions) Future<QueryResult<TParsed>>
fetch more results and then merge them with the latestResult according to FetchMoreOptions.updateQuery.
fetchResults({FetchPolicy? fetchPolicy}) MultiSourceResult<TParsed>
Fetch results based on options.fetchPolicy by default.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
onData(Iterable<OnData<TParsed>> callbacks, {bool removeAfterInvocation = true}) → void Function()
Register callbacks to trigger when stream has new results where QueryResult.isNotLoading
onListen() → void
refetch() Future<QueryResult<TParsed>?>
Attempts to refetch on the network, throwing error if not refetch safe
startPolling(Duration? pollInterval) → void
Poll the server periodically for results.
stopPolling() → void
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited