Flutter 动画之TweenAnimationBuilder 颜色变化
import 'package:flutter/material.dart';
class TweenAnimationBuilderDemo extends StatefulWidget {
const TweenAnimationBuilderDemo({Key? key}) : super(key: key);
@override
_TweenAnimationBuilderDemoState createState() =>
_TweenAnimationBuilderDemoState();
}
class _TweenAnimationBuilderDemoState extends State<TweenAnimationBuilderDemo> {
Color _myColor = Colors.blue;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: TweenAnimationBuilder<Color?>(
tween: ColorTween(begin: Colors.amber, end: _myColor),
duration: const Duration(seconds: 2),
builder: (BuildContext context, Color? color, Widget? child) {
return IconButton(
iconSize: 48,
color: color,
icon: child!,
onPressed: () {
setState(() {
_myColor = _myColor == Colors.blue ? Colors.red : Colors.blue;
});
},
);
},
child: const Icon(Icons.aspect_ratio),
),
),
);
}
}