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< callbacks, {bool removeAfterInvocation = true}) → void Function()TParsed> > -
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