build method
Implementation
({State initialState, Transitions transitions}) build() {
final usedEvents = <String>{};
final usedStates = <String>{};
final fromState = <State, Set<Event>>{};
final toState = <State, Set<Event>>{};
final initialState = _states[this.initialState];
if (initialState == null) {
throw StateError('Initial state not defined: ${this.initialState}');
}
usedStates.add(initialState.name);
for (final entry in _transitions.entries) {
final transition = entry.value;
final event = transition.event;
final source = transition.source;
final target = transition.target;
usedEvents.add(event.name);
usedStates.add(source.name);
usedStates.add(target.name);
(fromState[source] ??= {}).add(event);
(toState[target] ??= {}).add(event);
}
final unusedEvents = {..._events.keys}.difference(usedEvents);
if (unusedEvents.isNotEmpty) {
throw StateError('Found unreferenced events: ${unusedEvents.join(', ')}');
}
final unusedStates = {..._states.keys}.difference(usedStates);
if (unusedStates.isNotEmpty) {
throw StateError('Found unreferenced states: ${unusedStates.join(', ')}');
}
return (initialState: initialState, transitions: _transitions);
}