【Flutter】手势监测GestureDetector[ˈdʒestʃər dɪˈtektər]的属性介绍及应用

【Flutter】手势监测GestureDetector[ˈdʒestʃər dɪˈtektər]的属性及使用属性介绍tap--点击事件longPress--长按事件drag--拖拽事件forcePress--压感检测pan-综合横向与纵向拖拽的拖拽事件应用:做一个没有用的遥感JoyStick。属性介绍GestureWidget除key以外有39个属性,但大部分是成组出现的。大致分为以下几组:...
摘要由CSDN通过智能技术生成

属性介绍

GestureWidget除key以外有39个属性,但大部分是成组出现的。大致分为以下几组:child、tap、longPress、drag、forcePress、pan、scale、behavior以及excludeFromSemantics,下边列出了其中比较常用的几个。

tap–点击事件

不同于Android中通过View.SetOnClickListener()来给组件添加点击事件,Flutter中绝大多数的组件是不能响应点击事件的。通常做法是在目标Widget外层包裹一个GestureDetector,这也就是child属性的作用,GestureDetector的大小等于子Widget的大小,也就是触控区域的大小。

  1. onTap() :发生点击。
  2. onDoubleTap():双击。
  3. onTapCancel():手指离开屏幕时,触控位置不在GestureDetector范围内。
  4. onTapDown(TapXXXDetails) :手指落在触控范围内时的回调,details参数中包含触控点的全局位置(相对于屏幕左上角)和本地位置(相对于触控区左上角)。
  5. onTapUp(TapXXXDetails):同上。

longPress–长按事件

  1. onLongPress() :手指在触控区停留一段时间,检测出长按(不用放手)。
  2. onLongPressStart(LongPressXXXDetails):同上,获得检测到长按时的触控点坐标(Global和Local)。
  3. onLongPressMoveUpdate(LongPressXXXDetails):检测到长按,手指在屏幕内(而非仅仅在触控区域内),得到触控点坐标。
  4. onLongPressUp() :检测到长按,手指离开屏幕时。
  5. onLongPressEnd(LongPressXXXDetails):同上,获得该点坐标。

drag–拖拽事件

  1. onVerticalDragDown(DragDownDetails) :实际上不用拖拽,当手指接触触控区,就会产生该回调,获得该点坐标。
  2. onVerticalDragStart(DragStartDetails):开始拖拽,details不仅包含该点坐标,而且记录了开始拖拽的时间戳
  3. onVerticalDragUpdate(DragUpdateDetails):纵向拖拽过程中,参数不仅包含该点坐标,且记录了当前时间戳可以与startDrag的时间戳联合使用。
  4. onVerticalDragEnd(DragEndDetails) :产生纵向拖拽,手指离开屏幕,获得该点坐标。
  5. onVerticalDragCancel():点击了触控区但没有产生拖拽,或者横向拖拽至触控区外。
  6. Horizontal横向,略。

forcePress–压感检测

哇咔咔,GestureDetector这么厉害,居然支持压力检测。
这里的压力是没有单位的,默认范围是startPressure0.0-peakPressure1.0代表从没有压力到最大压力。

  1. onForcePressStart(ForcePressDetails) :触碰屏幕且有一定压力,压力值大于startPressure,获得压力值和触控点坐标。
  2. onForcePressPeak(ForcePressDetails):触屏屏幕的压力大于peakPreasure,获得压力值和触控点坐标。
  3. onForcePressUpdate(ForcePressDetails):已经被检测到产生压力的情况下,在屏幕上滑动,或者在原地改变压力大小,亦或是两者都有。同时获得压力值和触控点坐标。
  4. onForcePressEnd(ForcePressDetails) :已检测到产生压力的情况下,手指离开屏幕。

然而,在所有的压力检测回调中都有这样一则注释:

/// Note that this callback will only be fired on 
final GestureForcePressEndCallback onForcePressEnd;

也就是说,只有在具有压感屏的设备上,这些API才起作用。

pan-综合横向与纵向拖拽的拖拽事件

  1. onPanDown(DragDownDetails) :手指与屏幕接触时,获得该点坐标。
  2. onPanStart(DragStartDetails):手指开始在屏幕上移动。
  3. onPanCancel()
  4. 取消拖拽,暂未回调到该方法。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值