How to animate the color of a RaisedButton in Flutter?

后端 未结 2 816
我在风中等你
我在风中等你 2021-02-13 16:40

I have a RaisedButton. I want to animate it\'s color from green to red, and vice versa, every time the user click

2条回答
  •  醉酒成梦
    2021-02-13 17:20

    class ChangeRaisedButtonColor extends StatefulWidget {
      @override
      ChangeRaisedButtonColorState createState() => ChangeRaisedButtonColorState();
    }
    
    class ChangeRaisedButtonColorState extends State
        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
      void dispose() {
        super.dispose();
        _animationController.dispose();
      }
    
      @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();
                  }
                },
              ),
        );
      }
    }
    

提交回复
热议问题