Logger Middleware
In the counter example, we skipped Middleware — Middleware is only necessary if you want to:
- produce side affects in your cycle, such as logging
- do asynchronous work, such as HTTP calls
But, lets prove that Redux is working the way we claim by adding some middleware.
Let's add some middleware that's already been created as a package. I already had you install the package, it's called redux_logging
.
What this will do is log to your console everytime an Action is dispatched. It'll log the action, as well as the payload.
Middleware is simply a function that, if you tell the store to, it'll perform inbeteen the action dispatch and the reducer function. So you can write your own or add a package.
We're just going to add the package. Once installed, head to your main.dart
file.
On line 15 or so, in the new Store creation, there should be a named argument called middleware
that we're passing an empty List. Simply add the functions as properties in the list:
// main.dart
import 'package:redux_logging/redux_logging.dart';
...
final store = new Store<AppState>(
appReducer,
initialState: new AppState(),
middleware: [new LoggingMiddleware.printer()], //new
);
...
That's it. Save it, give it a full restart, and then press the Increment button and watch your terminal.
You'll see something like this:
[INFO] LoggingMiddleware: {Action: Instance of 'IncrementCountAction', State: AppState{isLoading: false, count: 0}, ts: 2018-02-24 11:01:46.261344}