State
The application state is all the data that your app needs to function,
Store
Declare your store by creating an instance of the Store class, with AppState as the state type:
Using the store state
Copy the following extension code to the same file where you defined the state class of your application, AppState:
Actions and reducers
The class that holds the application state, typically named AppState, is immutable.
Sync actions
Your action is synchronous if the return type of its reduce() method is AppState?.
Async actions
Your action is asynchronous if the return type of its reduce() method is Future.
Changing state is optional
For both sync and async reducers, returning a new state is always optional.
Action simplification
All your actions must extend the abstract base class ReduxAction.
Dispatching actions
As discussed, the only way to change the application state is by dispatching actions.
Failed actions
Actions that fail can simply throw errors using throw SomeError().
Wait, fail, succeed
Most async processes in your app take some time to finish, and they can either succeed or fail.
Events
Some native Flutter widgets, such as TextField and ListView,