提问者:小点点

当我在flutter中被点击时,我如何激活我的图标


我正在尝试动画图标在我的应用程序每当它是被点击。我实现了我想要的简单动画,但它总是动画一次后,我来到那个屏幕。我希望每次点击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,
                            );
                          },
                        ),
                      ),
........

共2个答案

匿名用户

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

ScaleButton(
          child: yourIcon())

匿名用户

如果您将图标动画代码放在initState()内部,那么每次启动/重新启动屏幕时只会触发一次。为了使它在每次按下IconButton时都被触发,您应该将图标动画代码复制或移动到icon按钮的onPressed属性中,该属性位于setState()函数中。