Skip to content

rows/automata

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2937520 · Jun 29, 2022

History

33 Commits
Apr 29, 2022
Apr 29, 2022
Apr 29, 2022
Jun 29, 2022
Jun 29, 2022
Apr 29, 2022
Jun 29, 2022
Apr 29, 2022
Apr 13, 2022
Apr 29, 2022
Apr 29, 2022
Jun 29, 2022

Repository files navigation


Rows
Spreadsheet with superpowers!

Automata

A dart package to create Finite State Machines and State Charts following SCXML specification.

The main highlights of automata are:

  • Declarative and type-based
  • Compound states (nested states)
  • Parallel states
  • Initial states
  • Guard conditions
  • Eventless transitions
  • Actions
  • Invoke async services
  • onEntry / onExit
  • onTransition

Documentation

Check our wiki for a more in-depth documentation: https://github.com/rows/automata/wiki

Super quick start:

dart pub add automata

or

flutter pub add automata
import 'package:automata/automata.dart';

class Inactive extends AutomataState {}
class Active extends AutomataState {}
class OnToggle extends AutomataEvent {}

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
    ''',
  ),
);

machine.send(OnToggle());

Credits

While developing this packages we were heavily inspired by Tinder's StateMachine, Stately's XState and the SCXML specification.

About

A Dart DSL for finite state machine and state charts

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages