Use AnimatedBuilder to describe an animation as
part of a build method for another widget.
If you simply want to define a widget with a reusable
animation, use an AnimatedWidget, as shown in
the Simplifying with AnimatedWidget section.

Examples of AnimatedBuilders in the Flutter API: BottomSheet,
ExpansionTile, PopupMenu, ProgressIndicator,
RefreshIndicator, Scaffold, SnackBar, TabBar,
TextField.

One problem with the code in the animate3 example,
is that changing the animation required changing the widget
that renders the logo. A better solution
is to separate responsibilities into different classes:

Render the logo

Define the Animation object

Render the transition

The widget tree for the animate4
example looks like this:

Starting from the bottom of the widget tree, the code for rendering
the logo is straightforward: