Controlling Playback
State machines play by “advancing” over time. This is done once per frame by the amount of time between frames. For example, for a graphic running at 60 frames per second, the state machine would be advanced by approximately 16.67 milliseconds (1/60th of a second) each frame. This advancing evaluates keyframes, transitions, data bindings changes, and ultimately the visible artboard elements to create the illusion of motion over time. This runtime provides a way to control whether the state machine is playing. When paused or stopped, the state machine does not advance and the last rendered frame remains visible. When playing from pause, the state machine resumes from where it left off, whereas when playing from stop, it restarts from the entry state. Whether or not a state machine plays automatically depends on the value of theautoplay property. This is true by default. It may be useful to set this to false if you want to configure the state machine and artboard, e.g. through data bindings, before initial playback.
In addition to the paused/stopped state, state machines may also “settle”. This is an optimization where the Rive runtime detects that no further changes will occur (for example, if there are no active transitions or animations). While settled the state machine will also stop advancing. This improves performance and energy use by avoiding unnecessary calculations. State machines are unsettled by external actions that change their state, such as user input or data binding changes. You can additionally force a state machine to unsettle by calling play, though it may immediately re-settle if there is no further work to be done.
Playing State Machines
There are a number of ways to play/select a state machine in Flutter.When Using RiveWidgetController (Recommended)
When you create a RiveWidgetController it will use the default state machine, or you can specify a state machine by name or index.
RiveWidget will automatically play the state machine.
active to play/pause the state machine (advancing and drawing):
StateMachineSelector can also be passed to RiveWidgetBuilder to specify which state machine to use:
When Using StateMachinePainter
When using StateMachinePainter, you can specify the state machine to use by passing an optional name.
Creating a State Machine Directly
Create the state machine directly from anArtboard: