fsm 0.0.1 copy "fsm: ^0.0.1" to clipboard
fsm: ^0.0.1 copied to clipboard

discontinued
outdated

A library for finite state machine realization.

example/fsm_example.dart

import 'package:fsm/fsm.dart';

void main() {
  final machine = StateMachine<State, Event, SideEffect>.create((g) => g
    ..initialState(Solid())
    ..state<Solid>(
        (b) => b..on<OnMelted>((s, e) => b.transitionTo(Liquid(), LogMelted())))
    ..state<Liquid>((b) => b
      ..on<OnFroze>((s, e) => b.transitionTo(Solid(), LogFrozen()))
      ..on<OnVaporized>((s, e) => b.transitionTo(Gas(), LogVaporized())))
    ..state<Gas>((b) =>
        b..on<OnCondensed>((s, e) => b.transitionTo(Liquid(), LogCondensed())))
    ..onTransition((t) => t.match((v) => print(v.sideEffect), (_) {})));

  machine.currentState is Solid; // TRUE

  machine.transition(OnMelted());
  machine.currentState is Liquid; // TRUE
}

abstract class State {}

class Solid extends State {}

class Liquid extends State {}

class Gas extends State {}

abstract class Event {}

class OnMelted extends Event {}

class OnFroze extends Event {}

class OnVaporized extends Event {}

class OnCondensed extends Event {}

abstract class SideEffect {}

class LogMelted extends SideEffect {}

class LogFrozen extends SideEffect {}

class LogVaporized extends SideEffect {}

class LogCondensed extends SideEffect {}
2
likes
0
pub points
0%
popularity

Publisher

verified publisherookamikb.dev

A library for finite state machine realization.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

dfunc

More

Packages that depend on fsm