当前位置: 首页 > 知识库问答 >
问题:

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

汪迪
2023-03-14

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

葛勇锐
2023-03-14

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

拓拔俊艾
2023-03-14

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

ScaleButton(
          child: yourIcon())
 类似资料:
  • 我当前正在尝试将进度条插入到我的Java GUI中。但是,当我点击“开始”按钮时,进度条并没有运行。在cmd中运行的所有不同的批处理文件都必须完成,然后进度条才会运行。但这又有什么意义呢?我希望它运行时,“开始”按钮被按下,当所有不同的批处理文件运行在cmd结束,进度条也停止。 这是我的代码: 所以按理说...当单击“开始”按钮时,应显示startTime,进度条应运行。但是,只有当cmd中的所有

  • 我面临这个问题已经有一段时间了,我必须每30分钟重新克隆我的项目,因为这个错误显示,不让我建立我的项目。 `失败:生成失败,出现异常。 > try:使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。使用--scan运行以获得完整的洞察力。 在https://help.gradle.org获得更多帮助 在6s中生成失败异常:Gradle

  • 我试图创建一个激活页面,以便当用户点击他们的激活链接时,它将引导用户到activate.php页面,并显示一条消息,说明阉羊帐户是否激活。 我的问题是,它一直显示消息“代码和用户名不匹配!帐户未激活。”它根本不显示成功消息“帐户已激活”,即使已单击激活链接。 此外,如果识别了正确的用户名和代码,数据库中的“活动”列应该更改为“1”,但它仍然显示“0”,这意味着帐户仍然不活动。 我的问题是,为什么它

  • 下面是我的代码:(它非常混乱,我只是在收集我的想法。我有一个更正式的程序,它要大得多,我将在稍后实现它) 当我选择A-E时,我会弹出一个带有“选择”或“取消”的对话框。我不希望原来的框架关闭。

  • 我正在尝试将国际象棋引擎作为一个有趣的项目,但为此我真的很想制作一个GUI。问题是我没有这方面的经验,所以我有点卡住了。我设法创建了棋盘,但有两件事我不知道如何做,在网上看只会让我更加困惑。 > 如何根据电路板在计算机内存中的外观,将这些块添加到电路板中。(例如,如果引擎进行了移动,我希望该移动也发生在gui上,我将如何将两者联系起来?) 我如何判断用户在gui中单击的是哪个方块? 这是我到目前为

  • 我希望当用户按下后退按钮时,我的活动从后退堆栈中清晰可见。我正在使用此意图来打开我的活动: 我希望当我按下后退按钮时,我的OutGoingActivity活动将从堆栈中删除。 每当我启动我的活动时,一个新的活动应该被打开,而不是从堆栈中打开。