Flutter GestureDetector Widget使用详解
Flutter中的GestureDetector Widget是一个用于识别各种手势操作的Widget。GestureDetector可以识别的手势操作包括:tap(轻触)、double tap(双击)、long press(长按)、vertical drag(垂直拖拽)、horizontal drag(水平拖拽)、pan(滑动)、scale(缩放)和rotate(旋转)。
GestureDetector Widget有以下属性:
- onTap: 当用户轻触屏幕时要执行的回调函数。
- onDoubleTap: 当用户双击屏幕时要执行的回调函数。
- onLongPress: 当用户长按屏幕时要执行的回调函数。
- onVerticalDragDown: 当用户开始垂直拖拽时要执行的回调函数。
- onVerticalDragEnd: 当用户结束垂直拖拽时要执行的回调函数。
- onHorizontalDragDown: 当用户开始水平拖拽时要执行的回调函数。
- onHorizontalDragEnd: 当用户结束水平拖拽时要执行的回调函数。
- onPanDown: 当用户开始滑动时要执行的回调函数。
- onPanUpdate: 当用户滑动时要执行的回调函数。
- onPanEnd: 当用户停止滑动时要执行的回调函数。
- onScaleStart: 当用户开始缩放时要执行的回调函数。
- onScaleUpdate: 当用户缩放时要执行的回调函数。
- onScaleEnd: 当用户停止缩放时要执行的回调函数。
- onRotateStart: 当用户开始旋转时要执行的回调函数。
- onRotateUpdate: 当用户旋转时要执行的回调函数。
- onRotateEnd: 当用户停止旋转时要执行的回调函数。
下面是一个使用GestureDetector Widget的例子,该例子显示了一个简单的可点击的按钮。当用户点击按钮时,屏幕上会显示一个SnackBar。
import 'package:flutter/material.dart';
class GestureDetectorDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Gesture Detector Demo'),
),
body: Center(
child: GestureDetector(
onTap: () {
final snackBar = SnackBar(content: Text('Button Clicked'));
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
child: Container(
width: 200,
height: 50,
decoration: BoxDecoration(
color: Colors.blue,
borderRadius: BorderRadius.circular(8),
),
child: Center(
child: Text(
'Click Me',
style: TextStyle(
fontSize: 24,
color: Colors.white,
),
),
),
),
),
),
);
}
}
在上面的例子中,我们将GestureDetector Widget包装在Container Widget中。当用户点击Container Widget时,GestureDetector Widget会触发onTap回调函数。在这种情况下,onTap回调函数会显示一个SnackBar,指示用户已经点击了按钮。
可以通过GestureDetector Widget的不同回调函数来实现各种手势,例如onDoubleTap、onLongPress等。