Store<St> class
Creates a Redux store that holds the app state.
The only way to change the state in the store is to dispatch a ReduxAction. You may implement these methods:
-
AppState reduce()
➜ To run synchronously, just return the state: AppState reduce() { ... return state; } To run asynchronously, return a future of the state: Future -
FutureOr<void> before()
➜ Runs before the reduce method. If it throws an error, thenreduce
will NOT run. To runbefore
synchronously, just return void: void before() { ... } To run asynchronously, return a future of void: Future -
void after()
➜ Runs afterreduce
, even if an error was thrown bybefore
orreduce
(akin to a "finally" block). If theafter
method itself throws an error, this error will be "swallowed" and ignored. Avoidafter
methods which can throw errors. -
bool abortDispatch()
➜ If this returns true, the action will not be dispatched:before
,reduce
andafter
will not be called, and the action will not be visible to theStoreTester
. This is only useful under rare circumstances, and you should only use it if you know what you are doing. -
Object wrapError(error)
➜ If any error is thrown bybefore
orreduce
, 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:wrapError(error) => UserException("Please enter a valid number.", cause: error)
• ActionObserver observes the dispatching of actions, and may be used to print or log the dispatching of actions.
• StateObservers receive the action, stateIni (state right before the action), stateEnd (state right after the action), and are used to log and save state.
• ErrorObservers may be used to observe or process errors thrown by actions.
For more info, see: https://pub.dartlang.org/packages/async_redux
- Implementers
Constructors
-
Store({required St initialState, Object? environment, bool syncStream = false, TestInfoPrinter? testInfoPrinter, List<
ActionObserver< ? actionObservers, List<St> >StateObserver< ? stateObservers, Persistor<St> >St> ? persistor, ModelObserver? modelObserver, ErrorObserver<St> ? errorObserver, WrapReduce<St> ? wrapReduce, WrapError<St> ? wrapError, bool? defaultDistinct, CompareBy? immutableCollectionEquality, int? maxErrorsQueued})
Properties
- defaultDistinct → bool
-
no setter
- dispatchCount → int
-
no setter
- env → Object?
-
no setter
-
errors
→ Queue<
UserException> -
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- immutableCollectionEquality → CompareBy?
-
If
null
(the default), view-models which are immutable collections will be compared by their default equality.If
CompareBy.byDeepEquals
, view-models which are immutable collections will be compared by their items, one by one (potentially slow comparison).If
CompareBy.byIdentity
, view-models which are immutable collections will be compared by their internals being identical (very fast comparison).no setter - isShutdown → bool
-
no setter
- modelObserver → ModelObserver?
-
no setter
-
onChange
→ Stream<
St> -
A stream that emits the current state when it changes.
no setter
-
onReduce
→ Stream<
TestInfo< St> > -
Used by the storeTester.
no setter
- reduceCount → int
-
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
- state → St
-
The current state of the app.
no setter
- stateTimestamp → DateTime
-
The timestamp of the current state in the store, in UTC.
no setter
- testInfoPrinter → TestInfoPrinter?
-
no setter
Methods
-
createTestInfoSnapshot(
St state, ReduxAction< St> action, Object? error, Object? processedError, {required bool ini}) → void -
defineState(
St state) → void - Beware: Changes the state directly. Use only for TESTS.
-
deleteStateFromPersistence(
) → Future< void> - Asks the Persistor to delete the saved state from the local persistence.
-
dispatch(
ReduxAction< St> action, {bool notify = true}) → FutureOr<ActionStatus> - Runs the action, applying its reducer, and possibly changing the store state. Note: dispatch is of type Dispatch.
-
dispatchAsync(
ReduxAction< St> action, {bool notify = true}) → Future<ActionStatus> - Runs the action, applying its reducer, and possibly changing the store state. Note: dispatchAsync is of type DispatchAsync.
-
dispatchSync(
ReduxAction< St> action, {bool notify = true}) → ActionStatus - Runs the action, applying its reducer, and possibly changing the store state. Note: dispatchSync is of type DispatchSync.
-
getAndRemoveFirstError(
) → UserException? - Gets the first error from the error queue, and removes it from the queue.
-
getLastPersistedStateFromPersistor(
) → St? - Gets, from the Persistor, the last state that was saved to the local persistence.
-
initTestInfoController(
) → void - Turns on testing capabilities, if not already.
-
initTestInfoPrinter(
TestInfoPrinter testInfoPrinter) → void - Changes the testInfoPrinter.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
pausePersistor(
) → void - Pause the Persistor temporarily.
-
persistAndPausePersistor(
) → void - Persists the current state (if it's not yet persisted), then pauses the Persistor temporarily.
-
readStateFromPersistence(
) → Future< St?> - Asks the Persistor to read the state from the local persistence. Important: If you use this, you MUST put this state into the store. The Persistor will assume that's the case, and will not work properly otherwise.
-
resumePersistor(
) → void - Resumes persistence by the Persistor, after calling pausePersistor or persistAndPausePersistor.
-
saveInitialStateInPersistence(
St initialState) → Future< void> -
Asks the Persistor to save the
initialState
in the local persistence. -
shutdown(
) → void - Call this method to shut down the store. It won't accept dispatches or change the state anymore.
-
teardown(
{St? emptyState}) → Future - Closes down the store so it will no longer be operational. Only use this if you want to destroy the Store while your app is running. Do not use this method as a way to stop listening to onChange state changes. For that purpose, view the onChange documentation.
-
toString(
) → String -
A string representation of this object.
inherited
-
waitCondition(
bool condition(St), {int? timeoutInSeconds}) → Future< void> -
Returns a future which will complete when the given
condition
is true. The condition can access the state. You may also provide atimeoutInSeconds
, which by default is null (never times out).
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited