stateMachine<S, E> function

StateMachineReacton<S, E> stateMachine<S, E>({
  1. required S initial,
  2. required Map<S, Map<E, TransitionHandler<S>>> transitions,
  3. Map<E, TransitionGuard<S>>? guards,
  4. TransitionEffect<S>? onTransition,
  5. String? name,
  6. ReactonOptions<S>? options,
})

Create a state machine reacton with typed states and events.

final authMachine = stateMachine<AuthState, AuthEvent>(
  initial: AuthState.loggedOut,
  transitions: {
    AuthState.loggedOut: {
      AuthEvent.login: (ctx) async => AuthState.authenticated,
    },
    AuthState.authenticated: {
      AuthEvent.logout: (ctx) => AuthState.loggedOut,
    },
  },
  name: 'auth',
);

Implementation

StateMachineReacton<S, E> stateMachine<S, E>({
  required S initial,
  required Map<S, Map<E, TransitionHandler<S>>> transitions,
  Map<E, TransitionGuard<S>>? guards,
  TransitionEffect<S>? onTransition,
  String? name,
  ReactonOptions<S>? options,
}) {
  return StateMachineReacton<S, E>(
    initial: initial,
    transitions: transitions,
    guards: guards,
    onTransition: onTransition,
    name: name,
    options: options,
  );
}