手势
手势表示由一个或多个指针移动组成的动作。主要有以下几种:
点击
onTapDown:指针已经在特定位置与屏幕接触。
onTapUp:指针停止在特定位置与屏幕接触。
onTap :点击事件触发。
onTapCancel: 先前指针触发的onTapDown不会再触发点击事件。
双击
onDoubleTap:用户快速连续两次在同一位置轻敲屏幕。
长按
onLongPress:指针在相同位置长时间保持与屏幕接触。
垂直拖动
onVerticalDragStart:指针已经与屏幕接触并可能开始垂直移动。
onVerticalDragUpdate 指针与屏幕接触并已沿垂直方向移动。
onVerticalDragEnd 先前与屏幕接触并垂直移动的指针不再与屏幕接触,并且在停止接触屏幕时以特定速度移动。
水平拖动
onHorizontalDragStart:指针已经接触到屏幕并可能开始水平移动
onHorizontalDragUpdate:指针与屏幕接触并已沿水平方向移动
onHorizontalDragEnd:先前与屏幕接触并水平移动的指针不再与屏幕接触,并在停止接触屏幕时以特定速度移动。
如何对这些手势进行检测呢?可以使用GestureDetector。
使用GestureDetector
要想检测单击、双击、垂直拖动等手势,只要用GestureDetector嵌套要检测手势Widget并实现想要监听的手势的方法就行。
class GestureDetectorWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: "Flutter",
home: Scaffold(
appBar: AppBar(
title: Text("GestureDetector示例"),
),
body: Center(
child: GestureDetector(
child: Text('手势识别'),
onTap: () {
print('点击');
},
onDoubleTap: () {
print('双击');
},
onLongPress: () {
print('长按');
},
onHorizontalDragStart: (DragStartDetails details) {
print('水平拖动');
},
),
),
),
);
}