手势用于与应用程序交互。它通常用于基于触摸的设备以与应用程序进行物理交互。它可以像在屏幕上单击一样简单,也可以是更复杂的物理交互,例如向特定方向滑动以向下滚动应用程序。它在游戏中被大量使用,随着设备变得比以往更加基于触摸,每个应用程序或多或少都需要它来函数。在本文中,我们将详细讨论它们。
这里提到了一些广泛使用的手势:
- 点击:用指尖触摸设备表面一小段时间,最后松开指尖。
- 双击:在短时间内点击两次。
- 拖动:用指尖触摸设备表面,然后平稳移动指尖,最后松开指尖。
- 轻弹:类似于拖动,但速度更快。
- 捏:用两根手指捏住设备表面。
- 缩放:与捏相反。
- 平移:用指尖触摸设备表面并在不松开指尖的情况下沿所需方向移动它。
在flutterGestureDetector小部件用于检测与在UI上应用物理相互作用。如果小部件应该体验手势,则它会保存在 GestureDetector 小部件中。同一个小部件捕捉手势并返回适当的动作或响应。
以下是手势及其相应事件的列表:
轻敲
- 点按
- 点按
- 点按
- 点击取消
双击
- 双击
长按
- 长按
垂直拖动
- onVerticalDragStart
- onVerticalDragUpdate
- 垂直拖拽结束
水平拖动
- onHorizontalDragStart
- onHorizontalDragUpdate
- onHorizontalDragEnd
平底锅
- 启动时
- 更新
- 盘端
例子:
Dart
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
final title = 'Gestures';
return MaterialApp(
title: title,
home: MyHomePage(title: title),
);
}
}
class MyHomePage extends StatelessWidget {
final String title;
MyHomePage({Key key, this.title}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('GeeksForGeeks'),
backgroundColor: Colors.green,
),
body: Center(child: MyButton()),
);
}
}
class MyButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
// The GestureDetector wraps the button.
return GestureDetector(
// show snackbar on tap of child
onTap: () {
final snackBar = SnackBar(content: Text(" You just Tapped on the Button"));
Scaffold.of(context).showSnackBar(snackBar);
},
// The tap button
child: Container(
padding: EdgeInsets.all(12.0),
decoration: BoxDecoration(
color: Theme.of(context).buttonColor,
borderRadius: BorderRadius.circular(8.0),
),
child: Text('Tap Button'),
),
);
}
}
输出:
Flutter支持作为低级手势检测机制的 Listener 小部件。它检测用户交互并调度以下提到的相应事件之一:
- 指针向下事件
- 指针移动事件
- 指针向上事件
- 指针取消事件
Flutter还具有用于执行特定和高级手势的小部件。这些小部件如下:
- Dismissible:支持轻击手势来终止小部件。
- Draggable:支持拖动手势使小部件移动。
- LongPressDraggable:如果父widget可拖动,则支持拖动手势移动子widget。
- DragTarget:接受任何 Draggable 小部件
- IgnorePointer:使用时,它会在手势检测过程中隐藏小部件及其相应的子部件。
- AbsorbPointer:停止手势检测过程本身以避免对重叠小部件的动作分派。
- 可滚动:使小部件内的内容可滚动。
想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!