In Flutter, you can think of a single frame as
a static configuration of a widget tree.

An animation is a sequence of frames that,
when rapidly displayed over time,
creates the illusion of motion.

In Flutter, an animation changes a widget property value
between frames to create the illusion of motion.
You can create an animation by telling Flutter
to rapidly rebuild a widget tree while gradually
changing a widget property on each iteration
of the widget tree.

The first example uses a timer to trigger
a change in the top margin of the bouncing ball
once every second.

Frame rate