【问题标题】:How can i animate my icon when being tapped in flutter在颤动中被点击时如何为我的图标设置动画
【发布时间】:2021-03-14 12:49:27
【问题描述】:

我试图在我的应用程序中的图标被点击时制作动画。我实现了我想要的简单动画,但是在我进入那个屏幕后它总是会动画一次。我希望每次点击IconButton 时它都应该有动画效果,它应该顺时针旋转 2 秒,再次按下时,逆时针旋转 2 秒。请帮帮我

这是代码的一部分-

....... 
AnimationController _controller;
  Animation<double> _animation;

@override
  void initState() {
    // TODO: implement initState
    super.initState();
    _cameraController = CameraController(cameras[0], ResolutionPreset.medium, imageFormatGroup: ImageFormatGroup.jpeg);
    cameraValue = _cameraController.initialize();
    _fetchAssets();
    _controller = AnimationController(
      duration: const Duration(seconds: 2),
      vsync: this,
      value: 025,
      lowerBound: 0.0,
      upperBound: 1.0,
    )..repeat();

    _animation = CurvedAnimation(parent: _controller, curve: Curves.linear);

    _controller.forward();
  }

.......

RotationTransition(
                        turns: _animation,
                        child: IconButton(
                          icon: Icon(
                            Icons.flip_camera_ios,
                            color: Colors.white,
                            size: MediaQuery.of(context).size.width*0.07,
                          ),
                          onPressed: () async {
                            setState(() {
                              if(cameraPosition=="Rear") {
                                cameraPosition="Front";
                              }
                              else if(cameraPosition=="Front"){
                                cameraPosition="Rear";
                              }
                            });
                            _cameraController = CameraController(
                              cameras[
                                cameraPosition=="Rear" ? 0
                                : 1
                              ],
                              ResolutionPreset.medium,
                            );
                          },
                        ),
                      ),
........

【问题讨论】:

    标签: android ios flutter dart animation


    【解决方案1】:

    使用以下flutter包:https://pub.dev/packages/scale_button

    ScaleButton(
              child: yourIcon())
    

    【讨论】:

      【解决方案2】:

      如果你将你的图标动画代码放在 initState() 中,它只会在你每次启动/重启屏幕时触发一次。要让它在您每次按下 IconButton 时触发,您应该将图标动画代码复制或移动到图标按钮的 onPressed 属性中,在 setState() 函数内。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2013-04-25
        • 2018-08-08
        • 2022-01-13
        • 1970-01-01
        • 2019-08-28
        相关资源
        最近更新 更多