// Copyright 2019 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; // Refer to the AnimatedWidget docs here - https://api.flutter.dev/flutter/widgets/AnimatedWidget-class.html // for examples of other common animated widgets. class FadeTransitionDemo extends StatefulWidget { const FadeTransitionDemo({super.key}); static const String routeName = 'basics/fade_transition'; @override State createState() => _FadeTransitionDemoState(); } class _FadeTransitionDemoState extends State with SingleTickerProviderStateMixin { late final AnimationController _controller; late final Animation _animation; late final CurvedAnimation _curve; @override void initState() { super.initState(); _controller = AnimationController( vsync: this, duration: const Duration(milliseconds: 500), ); _curve = CurvedAnimation(parent: _controller, curve: Curves.easeIn); _animation = Tween(begin: 1.0, end: 0.0).animate(_curve); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('Fade Transition')), body: Center( child: Column( mainAxisSize: MainAxisSize.min, children: [ FadeTransition( opacity: _animation, child: const Icon(Icons.star, color: Colors.amber, size: 300), ), ElevatedButton( child: const Text('animate'), onPressed: () => setState(() { _controller .animateTo(1.0) .then( (value) => _controller.animateBack(0.0), ); }), ), ], ), ), ); } }