📄️ 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,