如果widget本身不支持事件检测,则可以在外面包裹一个GestureDetector,并给它的onTap属性传递一个函数
class SampleApp extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold(
body: Center(
child: GestureDetector(
child: FlutterLogo(
size: 200.0,
),
onTap: (){
print("tap");
},
),
),
);
}
}
使用GestureDetector,可以监听多种手势
- 点击
- onTapDown — 在特定的位置轻触手势接触了屏幕
- onTapUp — 在特定的位置产生了一个轻触手势,并停止接触屏幕
- onTap — 触发了onTapDown 但没能触发tap
- 双击
- onDoubleTap — 用户在一个位置快速点击了两下屏幕
- 长按
- onLongPress — 用户在一个位置长时间接触屏幕
- 垂直拖动
- onVerticalDragStart — 接触了屏幕,并且可能会垂直移动
- onVerticalDragUpdate — 接触了屏幕,并且继续在垂直方向移动
- onVerticalDragEnd — 之前接触了屏幕并且垂直移动,并在停止接触屏幕前以某个垂直的速度移动
- 水平拖动
- onHorizontalDragStart — 接触了屏幕,并且可能会水平方向移动
- onHorizontalDragUpdate — 接触了屏幕,并且继续在水平方向移动
- onHorizontalDragUpdate — 之前接触屏幕并水平移动的触摸点与屏幕分离