redurx 1.1.1 copy "redurx: ^1.1.1" to clipboard
redurx: ^1.1.1 copied to clipboard

A thin layer of a Redux-based state manager on top of RxDart.

ReduRx Build Status #

👌 A thin layer of a Redux-based state manager on top of RxDart.

Flutter bindingsReact bindings

Getting started #

Usage #

import 'dart:async';
import 'package:redurx/redurx.dart';

class State {
  State(this.count);
  final int count;

  @override
  String toString() => count.toString();
}

class Increment extends Action<State> {
  Increment([this.by = 1]);
  final int by;
  State reduce(State state) => State(state.count + by);
}

class AsyncIncrement extends AsyncAction<State> {
  @override
  Future<Computation<State>> reduce(State state) async {
    int result = await doAsyncTask();
    return (State state) =>
      State(count: state.count + result);
    }
  }
}

void main() {
  final store = Store<State>(State(0));

  store.add(LogMiddleware<State>());
  print(store.state.count); // 0

  store.dispatch(Increment());
  // Before action: Increment: 0 (from LogMiddleware)
  // After action: Increment: 1 (from LogMiddleware)
  print(store.state.count); // 1

  store.dispatch(Increment(2));
  // Before action: Increment: 1 (from LogMiddleware)
  // After action: Increment: 3 (from LogMiddleware)
  print(store.state.count); // 3
}

Just give it a try. Feel free to open Issues and PRs!

1
likes
40
pub points
1%
popularity

Publisher

unverified uploader

A thin layer of a Redux-based state manager on top of RxDart.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

rxdart

More

Packages that depend on redurx