我有 RaisedButton . 每次用户点击它时,我想 animate 的颜色从 green 到 red ,反之亦然 .
RaisedButton
怎么做到这一点?
class ChangeRaisedButtonColor extends StatefulWidget { @override ChangeRaisedButtonColorState createState() => ChangeRaisedButtonColorState(); } class ChangeRaisedButtonColorState extends State<ChangeRaisedButtonColor> with SingleTickerProviderStateMixin { AnimationController _animationController; Animation _colorTween; @override void initState() { _animationController = AnimationController(vsync: this, duration: Duration(milliseconds: 300)); _colorTween = ColorTween(begin: Colors.red, end: Colors.green) .animate(_animationController); super.initState(); } @override Widget build(BuildContext context) { return AnimatedBuilder( animation: _colorTween, builder: (context, child) => RaisedButton( child: Text("Change my color"), color: _colorTween.value, onPressed: () { if (_animationController.status == AnimationStatus.completed) { _animationController.reverse(); } else { _animationController.forward(); } }, ), ); } }
1 回答