addTransition method

Transition addTransition({
  1. Map<String, String> arguments = const {},
  2. String? action,
  3. required String from,
  4. String? guard,
  5. required String on,
  6. required String to,
})

Implementation

Transition addTransition({
  Map<String, String> arguments = const {},
  String? action,
  required String from,
  String? guard,
  required String on,
  required String to,
}) {
  final event = getEvent(on);
  final source = getState(from);
  final target = getState(to);
  final transition = Transition(
    arguments: arguments,
    action: action,
    event: event,
    guard: guard,
    source: source,
    target: target,
  );
  final key = (source, event, guard);
  final found = _transitions[key];
  if (found != null) {
    final difference = found.difference(transition);
    if (difference != null) {
      throw StateError('''
A conflict was detected while adding the transition.
Transition key: ($source, $event, $guard)
Conflicting values: ${difference.$1}
Exist value: ${difference.$2.$1}
New value: ${difference.$2.$2} ''');
    }
  }

  _transitions[key] = transition;
  return transition;
}