redux 2.0.0


Redux for Dart

redux.dart #

Redux for Dart using generics for typed State. For complete documentation, view the API Docs.

Web Examples #

See the example/ directory to for a few simple examples of the basics of Redux.

To launch the examples in your browser:

  1. Run pub serve example from this directory
  2. Open http://localhost:8080

Flutter Integration #

See the flutter_redux library for a set of Widgets custom made to work with Redux.

Usage #

import 'package:redux/redux.dart';

// Create a Reducer with a State (int) and an Action (String)
// Any dart object can be used for Action and State.
int counterReducer(int state, action) {
  switch (action) {
    case 'INCREMENT':
      return state + 1;
    case 'DECREMENT':
      return state - 1;
      return state;

// A piece of middleware that will log all actions with a timestamp
// to your console!
loggingMiddleware(Store<int> store, action, NextDispatcher next) {
  print('${new}: $action');


main() {
  final store = new Store<int>(
    initialState: 0, 
    middleware: [loggingMiddleware],

  // Render our State right away
  // Listen to store changes, and re-render when the state is updated

  // Attach a click handler to a button. When clicked, the `INCREMENT` action
  // will be dispatched. It will then run through the reducer, updating the 
  // state.
  // After the state changes, the html will be re-rendered by our `onChange`
  // listener above. 
  querySelector('#increment').onClick.listen((_) {

render(int state) {
  querySelector('#value').innerHtml = '${state}';