Flutter的Animation简单用法

class _MyHomePageState extends State with TickerProviderStateMixin {
  AnimationController _controller;
  Animation _animationBS;
  AnimationController _controllerColor;
  Animation _animation;

  @override
  void initState() {
    // TODO: implement initState
    super.initState();
    _controller = AnimationController(
        vsync: this,
        duration: Duration(milliseconds: 1000));
    _controller.addListener(() {
      setState(() {//这里一定要设置setState,不然变大缩小动画不生效

      });
    });
    _animationBS =Tween(begin: 50.0,end: 100.0).chain(CurveTween(curve: Curves.easeOut)).animate(_controller);

    _controllerColor = AnimationController(
        vsync: this, duration: Duration(milliseconds: 1000));
    _animation = ColorTween(begin: Colors.blue,end: Colors.amber).animate(_controllerColor);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: Center(
          child: InkWell(
            onTap: () {
              if (_controller.isDismissed) {
                _controller.forward();
              } else {
                _controller.reverse();
              }

              if (_controllerColor.isDismissed) {
                _controllerColor.forward();
              } else {
                _controllerColor.reverse();
              }
            },
            child: Container(
              width: _animationBS.value,
              height: _animationBS.value,
              decoration: BoxDecoration(shape: BoxShape.circle ,color: _animation.value),
            ),
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
    _controllerColor.dispose();
  }
}

你可能感兴趣的:(Flutter的Animation简单用法)