ObservableQuery 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.


ObservableQuery({@required QueryManager queryManager, @required WatchQueryOptions options})


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


addResult(QueryResult result, {bool fromRebroadcast = false}) → void
Add a result to the stream unless it was created before lasestResult. [...]
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>
fetch more results and then merge them with the latestResult according to FetchMoreOptions.updateQuery. [...]
fetchResults() MultiSourceResult
Fetch results based on options.fetchPolicy [...]
noSuchMethod(Invocation invocation) → dynamic
Invoked when a non-existent method or property is accessed. [...]
onData(Iterable<OnData> callbacks) → void
Register callbacks to trigger when stream has new results where QueryResult.isNotLoading [...]
onListen() → void
refetch() Future<QueryResult>
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. [...]


operator ==(Object other) bool
The equality operator. [...]