mutation 0.1.0 copy "mutation: ^0.1.0" to clipboard
mutation: ^0.1.0 copied to clipboard

outdated

A state machine written in dart.

dart_mutate #

A state machine written in dart.

Examples #

Example #

class GoToA extends Event {}

class GoToB extends Event {}

class GoToC extends Event {}

class Start extends State {
  Start() {
    this.register<GoToA>((e) => A());
    this.register<GoToC>((e) => C());
  }
}

class A extends State {
  A() {
    this.register<GoToB>((e) async {
      print(' .start');
      await Future.delayed(Duration(seconds: 1));
      print(' .end');
      return B();
    });
  }
}

class B extends State {
  B() {
    this.register<GoToC>((e) => C());
  }
}

class C extends State {}

Future main() async {
  final dispatcher = Dispatcher(Start());

  dispatcher.state.listen((s) {
    if (!s.isLast) {
      print('$s');
      print('next ?');
      final event = stdin.readLineSync().toLowerCase().trim();
      switch (event) {
        case 'a':
          dispatcher.dispatch.add(GoToA());
          break;
        case 'b':
          dispatcher.dispatch.add(GoToB());
          break;
        case 'c':
          dispatcher.dispatch.add(GoToC());
          break;
      }
    }
  });
  final last = await dispatcher.complete();
  print("Finished (${last.runtimeType})");
}

0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

A state machine written in dart.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

meta, rxdart

More

Packages that depend on mutation