To set up the animation:

Create an AnimationController that manages all of the
Animations.

Create a Tween for each property being animated.
    
      The Tween defines a range of values.
      The Tween’s animate method requires the
parent controller, and produces an Animation
for that property.

Specify the interval on the Animation’s curve property.

When the controlling animation’s value changes,
the new animation’s value changes, triggering the UI to update.

The following code creates a tween for the width property.
It builds a CurvedAnimation,
specifying an eased curve. See Curves for
other available pre-defined animation curves.

The begin and end values don’t have to be doubles.
The following code builds the tween for the borderRadius property
(which controls the roundness of the square’s corners),
using BorderRadius.circular().

Complete staggered animation