Skip to content

Getting started

Ricardo Canastro edited this page Apr 29, 2022 · 3 revisions

Install

dart pub add automata

or

flutter pub add automata

Define the states and events

// States
class Inactive extends AutomataState {}
class Active extends AutomataState {}

// Events
class OnToggle extends AutomataEvent {}

Create your machine

final machine = StateMachine.create(
  (g) => g
    ..initial<Inactive>()
    ..state<Inactive>(
      builder: (g) => g..on<OnToggle, Active>()
    )
    ..state<Active>(
      builder: (g) => g..on<OnToggle, Inactive>()
    ),
  onTransition: (e, value) => print(
    '''
    ## Transition::
    Received Event: $e
    Value: $value
    ''',
  ),
);

Send events and check the state

machine.send(OnToggle());

machine.isInState(Inactive): // false
machine.isInState(Active): // true