美文网首页
Flutter 开发手势冲突

Flutter 开发手势冲突

作者: 歐陽公子 | 来源:发表于2024-07-04 11:12 被阅读0次

工作中遇到一个小问题,实现一个可以进行缩放窗口大小和移动窗口位置的功能。需要使用到onPanUpdate手势和onScaleUpdate手势。

GestureDetector中使用了onPanUpdate手势和onScaleUpdate导致出现了冲突报红字错误:

Having both a pan gesture recognizer and a scale gesture recognizer is redundant; scale is a

superset of pan.

此为报错详情

一、首先详细了解一下这两个手势功能:

1、onPanUpdate为滑动手势

Swipe(滑动):

onPanUpdate: 当用户在屏幕上拖动时连续触发。

onPanStart: 当滑动开始时触发。

onPanEnd: 当滑动结束时触发。

2、onScaleUpdate为缩放手势

Scale(缩放):

onScaleStart: 当缩放开始时触发。

onScaleUpdate: 在缩放过程中连续触发。

onScaleEnd: 缩放结束时触发。

二、出现此问题的原因Flutter的解释为:同时拥有平移手势识别器和缩放手势识别器是多余的,直接使用缩放手势即可

三、解决办法:目前在网上找到几篇文章使用过体验感没有那么好

1、https://blog.csdn.net/m0_46278918/article/details/125223821    手绘板的制作——画布缩放

2、https://www.5axxw.com/questions/content/c2mx4j#google_vignette   Incorrect GestureDetector arguments

四、解决思路

目前我使用的办法是在窗口上面添加一个长按onLongPress手势,

长按情况下可以取消和选中状态,选中状态下可以进行移动窗口,非选中状态使用onScaleUpdate手势,选中状态下使用onPanUpdate手势。

@override

  Widget build(BuildContext context) {

    return isCanMove ? canDragWidget() : canScaleWidget();

  }

另辟蹊径解决此问题。

相关文章

网友评论

      本文标题:Flutter 开发手势冲突

      本文链接:https://www.haomeiwen.com/subject/nebicjtx.html