late AnimationController controller; late Tween <Alignment > tween; final Curve curve = Curves .ease; late Animation <Alignment > animation; @override void initState () { controller = AnimationController ( duration: const Duration (seconds: 3), vsync: this, // <<< 2. passing this class to AnimationController ); tween = Tween ( // <<< 3. declare Tween with the beginning value and ending value begin: Alignment .topCenter, end: Alignment .bottomCenter, ); tween. chain ( CurveTween (curve: curve)); // <<< 4. apply transition curves to Tween animation = controller. drive ( tween); // <<< 5. create Animation from AnimationController and Tween super.initState (); } @override void dispose () { controller. dispose (); super.dispose (); } body: AnimatedBuilder ( animation: animation, builder: (context, _) { return Align ( alignment: animation .value, // <<< 6. bind Animation to the widget you want to animate child: const Text('Hello world!' ), ); }, ),