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

One tricky point in the code below is that the child looks
like it’s specified twice. What’s happening is that the
outer reference of child is passed to AnimatedBuilder,
which passes it to the anonymous closure, which then uses
that object as its child. The net result is that the
AnimatedBuilder is inserted in between the two widgets
in the render tree.

animate2 example. The

{animate2 → animate4}/lib/main.dart

@@ -1,27 +1,47 @@

1
1

import 'package:flutter/material.dart';

2
2

void main() => runApp(const LogoApp());

class AnimatedLogo extends AnimatedWidget {

const AnimatedLogo({super.key, required Animation<double> animation})