This new Tween (or Animatable) produces Offset values by first evaluating the
CurveTween, then evaluating the Tween<Offset>. When the animation runs, the
values are computed in this order:

The animation (provided to the transitionsBuilder callback) produces values
from 0 to 1.

The CurveTween maps those values to new values between 0 and 1 based on its
curve.

The Tween<Offset> maps the double values to Offset values.

Another way to create an Animation<Offset> with an easing curve is to use a
CurvedAnimation:

Interactive example

Animate a widget using a physics simulation