【问题标题】:Flutter how to change SVG after onTap with Gesture DetectorFlutter 如何在 onTap 后使用 Gesture Detector 更改 SVG
【发布时间】:2020-12-30 05:19:02
【问题描述】:

想要实现与图像相同的功能:

Flutter how to change image after onTap with Gesture Detector

我正在使用这个包: https://pub.dev/packages/flutter_svg/example

尽管我能够在 IconButton 中执行此操作,但我需要在 GestureDetector 中执行此操作,而不是在 IconButton 中,所以为了清楚起见,需要帮助如何将 SVG 实现到 GestureDetector 而不是 IconButton!

我能够在屏幕上渲染 SVG,但不知道如何在 GestureDetector 中实现它,在屏幕上渲染 SVG,我这样做是这样的:

Expanded svgTest({double blackKeyWidth}) {
    return Expanded(
      child: Container(
        child: IconButton(
            icon: SvgPicture.asset(
              'assets/images/1.svg',
              fit: BoxFit.fill,
              allowDrawingOutsideViewBox: true,
              width: 500,
            ),
            onPressed: null //do something,
            ),
      ),
    );
  }

不知道如何在 GestureDetector 中实现 SVG,它无法进入,因为 Image 和 Gesture Detector 不接受图标,或者我做得不对。

谢谢

【问题讨论】:

  • 你想改变它一次还是每次点击?
  • 每次,我想在 GestureDetector 而不是 IconButton 中实现 SVG,我在这里发布了 IconButton 代码,作为我自己能够做的一个例子,虽然我希望 SVG 每次都改变onTapDown 和 onTapUp

标签: flutter dart svg gesturedetector


【解决方案1】:

如果您想更改iconButtononTap 方法上的图像,那么您应该使用setStateonTap 方法中更改image路径

String imagePath = "assets/images/1.svg";

Expanded svgTest({double blackKeyWidth}) {
    return Expanded(
      child: Container(
        child: IconButton(
            icon: SvgPicture.asset(
              '${imagePath}',
              fit: BoxFit.fill,
              allowDrawingOutsideViewBox: true,
              width: 500,
            ),
            onPressed: (){
               setState(() {
                  imagePath = "assets/images/2.svg";
                });
},
            ),
      ),
    );
  }

已编辑:(对于手势检测器,您可以简单地将 SVG 包裹在其中)

替换 iconbutton with GestureDetector 并添加其onTap 和@987654331 @ 方法也是。

  GestureDetector(
    onTap: () {
      setState(() {
        imagePath = "assets/images/2.svg";
      });
    },
    onTapUp: (TapUpDetails tapUpDetails) {
      setState(() {
        imagePath = "assets/images/1.svg";
      });
    },
    child: SvgPicture.asset(
      '${imagePath}',
      //fit: BoxFit.fill,
      //allowDrawingOutsideViewBox: true,
      //width: 500,
    ),
  ),

For More About GestureDetector and Flutter SVG Click Here

【讨论】:

  • 想要在 GestureDetector 中实现 SVG,需要它提供的额外功能,比如 SVG 在 onTapUp 再次发生变化
  • @Jan 请检查更新后的代码,并告诉您 GestureDetector 遇到什么问题
猜你喜欢
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2022-09-27
相关资源
最近更新 更多