ServerPush<St> mixin
Mixin ServerPush should be used by actions that put, in the store state, values that were received by server-push, via WebSockets, Server-Sent Events (SSE), Firebase, etc.
It works together with OptimisticSyncWithPush to ensure that out-of-order pushes do not corrupt the state, and that local optimistic updates are not overwritten by stale pushes.
- Superclass constraints
- ReduxAction<
St>
- ReduxAction<
Properties
-
dispatch
→ Dispatch<
St> -
Dispatches the action, applying its reducer, and possibly changing the store state.
The action may be sync or async.
no setterinherited
-
dispatchAll
→ List<
ReduxAction< Function(List<St> >ReduxAction< actions, {bool notify})St> > -
Dispatches all given
actionsin parallel, applying their reducer, and possibly changing the store state. It returns the same list ofactions, so that you can instantiate them inline, but still get a list of them.no setterinherited -
dispatchAndWait
→ DispatchAndWait<
St> -
Dispatches the action, applying its reducer, and possibly changing the store state.
The action may be sync or async. In both cases, it returns a Future that resolves when
the action finishes.
no setterinherited
-
dispatchAndWaitAll
→ Future<
List< Function(List<ReduxAction< >St> >ReduxAction< actions, {bool notify})St> > -
Dispatches all given
actionsin parallel, applying their reducers, and possibly changing the store state. The actions may be sync or async. It returns a Future that resolves when ALL actions finish.no setterinherited -
dispatchAsync
→ DispatchAsync<
St> -
no setterinherited
-
dispatchSync
→ DispatchSync<
St> -
Dispatches the action, applying its reducer, and possibly changing the store state.
However, if the action is ASYNC, it will throw a StoreException.
no setterinherited
- env → Object?
-
Gets the store environment.
This can be used to create a global value, but scoped to the store.
For example, you could have a service locator, here, or a configuration value.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- initialState → St
-
Returns the state as it was when the action was dispatched.
no setterinherited
- isFinished → bool
-
Returns true only if the action finished with no errors.
In other words, if the methods before, reduce and after all finished executing
without throwing any errors.
no setterinherited
- microtask → Future
-
To wait for the next microtask:
await microtask;no setterinherited - runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- state → St
-
no setterinherited
- stateTimestamp → DateTime
-
no setterinherited
- status → ActionStatus
-
no setterinherited
-
store
→ Store<
St> -
no setterinherited
Methods
-
abortDispatch(
) → bool -
If abortDispatch returns true, the action will NOT be dispatched:
before,reduceandafterwill not be called, and the action will not be visible to the store observers.inherited -
after(
) → void -
This is an optional method that may be overridden to run during action
dispatching, after
reduce. If this method throws an error, the error will be swallowed (will not throw). So you should only run code that can't throw errors. It may be synchronous only. Note this method will always be called, even if errors were thrown bybeforeorreduce.inherited -
applyServerPushToState(
St state, Object? key, int serverRevision) → St? - You must override this to:
-
assertUncompletedFuture(
) → void -
An async reducer (one that returns Future<AppState?>) must never complete without at least
one await, because this may result in state changes being lost. It's up to you to make sure
all code paths in the reducer pass through at least one
await.inherited -
associatedAction(
) → Type - You must override this to return the type of the action that uses the corresponding OptimisticSyncWithPush that owns this value (so both compute the same stable-sync key).
-
before(
) → FutureOr< void> -
This is an optional method that may be overridden to run during action
dispatching, before
reduce. If this method throws an error, thereducemethod will NOT run, but the methodafterwill. It may be synchronous (returningvoid) ou async (returningFuture<void>). You should NOT returnFutureOr.inherited -
clearExceptionFor(
Object actionTypeOrList) → void -
Removes the given
actionTypeOrListfrom the list of action types that failed.inherited -
computeOptimisticSyncKey(
) → Object - Must match the OptimisticSyncWithPush action key computation. Default: (associatedActionType, optimisticSyncKeyParams)
-
dispatchState(
St state, {bool notify = true}) → ActionStatus -
This is a shortcut, equivalent to:
inherited
-
disposeProp(
Object? keyToDispose) → void -
Uses disposeProps to dispose and a single property identified by
its key
keyToDispose, and remove it from the props.inherited -
disposeProps(
[bool predicate({Object? key, Object? value})?]) → void -
The disposeProps method is used to clean up resources associated with
the store's properties, by stopping, closing, ignoring and removing timers,
streams, sinks, and futures that are saved as properties in the store.
inherited
-
exceptionFor(
Object actionTypeOrList) → UserException? -
Returns the UserException of the
actionTypeOrListthat failed.inherited -
getServerRevisionFromState(
Object? key) → int -
You must override this to return the server revision you saved in the
state in ServerPush.applyServerPushToState for the given
key. Do return-1when unknown. -
ifWrapReduceOverridden(
) → bool -
inherited
-
ifWrapReduceOverridden_Async(
) → bool -
inherited
-
ifWrapReduceOverridden_Sync(
) → bool -
inherited
-
isFailed(
Object actionOrTypeOrList) → bool -
Returns true if an
actionOrTypeOrListfailed with an UserException. Note: This method uses the EXACT type inactionOrTypeOrList. Subtypes are not considered.inherited -
isSync(
) → bool -
Returns true if the action is SYNC, and false if the action is ASYNC.
The action is considered SYNC if the
beforemethod, thereducemethod, and thewrapReducemethods are all synchronous.inherited -
isWaiting(
Object actionOrTypeOrList) → bool -
You can use isWaiting to check if:
inherited
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
optimisticSyncKeyParams(
) → Object? - Same meaning as in OptimisticSyncWithPush: the params that differentiate keys.
-
prop<
V> (Object? key) → V -
Gets a property from the store.
This can be used to save global values, but scoped to the store.
For example, you could save timers, streams or futures used by actions.
inherited
-
pushMetadata(
) → PushMetadata - You must override this to provide the PushMetadata that came with the push, including:
-
reduce(
) → St? -
The
reducemethod is the action reducer. It may read the action state, the store state, and then return a new state (ornullif no state change is necessary).override -
runtimeTypeString(
) → String -
Returns the runtimeType, without the generic part.
inherited
-
setProp(
Object? key, Object? value) → void -
Sets a property in the store.
This can be used to save global values, but scoped to the store.
For example, you could save timers, streams or futures used by actions.
inherited
-
setStore(
Store< St> store) → void -
inherited
-
toString(
) → String -
A string representation of this object.
inherited
-
waitAllActions(
List< ReduxAction< actions, {bool completeImmediately = false}) → Future<St> >void> -
Returns a future that completes when ALL given
actionsfinished dispatching. You MUST provide at list one action, or an error will be thrown.inherited -
waitCondition(
bool condition(St), {int? timeoutMillis}) → Future< ReduxAction< St> ?> -
Returns a future which will complete when the given state
conditionis true. If the condition is already true when the method is called, the future completes immediately.inherited -
wrapError(
Object error, StackTrace stackTrace) → Object? -
If any error is thrown by
reduceorbefore, you have the chance to further process it by usingwrapError. Usually this is used to wrap the error inside of another that better describes the failed action. For example, if some action converts a String into a number, then instead of throwing a FormatException you could do:inherited -
wrapReduce(
Reducer< St> reduce) → FutureOr<St?> -
You may override wrapReduce to wrap the
reducemethod and allow for some pre- or post-processing. For example, if you want to prevent an async reducer to change the current state in cases where the current state has already changed since when the reducer started:inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited