mutation 0.1.1 mutation: ^0.1.1 copied to clipboard
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})");
}