StateMachine class
A simple, typed finite state machine.
Creating a state machine takes 3 steps:
- Instantiate a StateMachine.
- Create the set of states.
- Create the set of valid state transitions.
To demonstrate:
// 1.
StateMachine machine = new StateMachine('switch');
// 2.
State isOn = machine.newState('on');
State isOff = machine.newState('off');
// 3.
StateTransition turnOn = machine.newStateTransition('turnOn', [isOff], isOn);
StateTransition turnOff = machine.newStateTransition('turnOff', [isOn], isOff);
Once the state machine is setup as desired, it must be started at a specific state. Once started, no additional states or transitions can be added.
machine.start(isOff);
At any point, you can retrieve the current state from the machine:
State current = machine.current;
Once initialized, the state machine is driven by the states and the state transitions. See State and StateTransition for more information.
Constructors
- StateMachine(String name)
Properties
- current → State
-
State that the machine is currently in.
no setter
-
didDispose
→ Future<
Null> -
A Future that will complete when this object has been disposed.
no setterinherited
- disposableTypeName → String
-
A type name, similar to runtimeType but intended to work
with minified code.
no setter
- disposalTreeSize → int
-
The total size of the disposal tree rooted at the current Disposable
instance.
no setterinherited
- hashCode → int
-
The hash code for this object.
no setterinherited
- isDisposed → bool
-
Whether this object has been disposed.
no setterinherited
- isLeakFlagSet → bool
-
Whether the leak flag for this object has been set.
no setterinherited
- isOrWillBeDisposed → bool
-
Whether the disposal of this object has been requested, is in progress, or
is complete.
no setterinherited
- name ↔ String
-
Name of the state machine. Used for debugging.
getter/setter pair
-
onStateChange
→ Stream<
StateChange> -
Stream of state change events. This allows States
and StateTransitions to listen for state changes
and notify listeners as necessary.
no setter
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
awaitBeforeDispose<
T> (Future< T> future) → Future<T> -
Add
future
to a list of futures that will be awaited before the object is disposed.inherited -
dispose(
) → Future< Null> -
Dispose of the object, cleaning up to prevent memory leaks.
inherited
-
flagLeak(
[String? description]) → void -
Flag the object as having been disposed in a way that allows easier
profiling.
inherited
-
getManagedDelayedFuture<
T> (Duration duration, T callback()) → Future< T> -
Creates a Future that will complete, with the value
returned by
callback
, after the given amount of time has elapsed.inherited -
getManagedDisposer(
Disposer disposer) → ManagedDisposer -
Automatically handle arbitrary disposals using a callback.
inherited
-
getManagedPeriodicTimer(
Duration duration, void callback(Timer timer)) → Timer -
Creates a periodic Timer that will be cancelled if active
upon disposal.
inherited
-
getManagedTimer(
Duration duration, void callback()) → Timer -
Creates a Timer instance that will be cancelled if active
upon disposal.
inherited
-
listenToStream<
T> (Stream< T> stream, void onData(T event), {Function? onError, void onDone()?, bool? cancelOnError}) → StreamSubscription<T> -
Returns a StreamSubscription which handles events from the stream using
the provided
onData
,onError
andonDone
handlers.inherited -
manageAndReturnTypedDisposable<
T extends Disposable> (T disposable) → T -
Automatically dispose another object when this object is disposed.
inherited
-
manageCompleter<
T> (Completer< T> completer) → Completer<T> -
Ensure that a completer is completed when the object is disposed.
inherited
-
manageDisposable(
Disposable disposable) → void -
inherited
-
manageStreamController(
StreamController controller) → void -
Automatically cancel a stream controller when this object is disposed.
inherited
-
newState(
String name) → State - Create a new State for this StateMachine.
-
newStateTransition(
String name, List< State> from, State to) → StateTransition - Create a new StateTransition for this StateMachine.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
onDispose(
) → Future< Null> -
Callback to allow arbitrary cleanup on dispose.
inherited
-
onWillDispose(
) → Future< Null> -
Callback to allow arbitrary cleanup as soon as disposal is requested (i.e.
dispose is called) but prior to disposal actually starting.
inherited
-
start(
State startingState) → void - Start the state machine at the given starting state.
-
toString(
) → String -
A string representation of this object.
override
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited