我在自定义的无状态视图中有一个GestureDetector。当onTap触发时,我会显示一个显示一些信息的快餐店。当用户多次快速点击时,它就会永远显示快餐店。
GestureDetector(
onTap: () {
Clipboard.setData(new ClipboardData(text: idText));
Scaffold.of(context).showSnackBar(SnackBar
(content: Text('ID copied')));
},
child: Icon(Icons.content_copy,),
}在再次单击onTap之前,我希望禁用它几秒钟。
发布于 2019-04-06 09:02:11
创建一个bool标志并定义一个方法:
bool _enabled = true;
void _onTap () {
// Disable GestureDetector's 'onTap' property.
setState(() => _enabled = false);
// Enable it after 1s.
Timer(Duration(seconds: 1), () => setState(() => _enabled = true));
// Rest of your code...
}使用:
GestureDetector(
onTap: _enabled ? _onTap: null,
child: Icon(Icons.content_copy),
)发布于 2019-10-24 07:02:58
将其包装在一个AbsorbPointer中
var shouldAbsorb = true;
AbsorbPointer(
absorbing: shouldAbsorb,
child: GestureDetector(
onTap: () {
Navigator.of(context).pop();
},
child: Container(
color: Colors.red,
),
),
)发布于 2020-02-02 21:50:44
就我个人而言,我使用来自GestureDetector的另外两种方法
onTapDown:当用户按下小部件时。
onTapUp:当用户离开小部件时。
onTap:是按下然后按下的时候。如果用户的手指滑入太多颤音,就像取消点击。
onTapCancel:当用户取消。
bool pressing = false;
GestureDetector(
// when user is pressing
onTapDown: (details) {
setState(() {
pressing = true;
});
},
// when user leaved
onTapUp: (details) {
setState(() {
pressing = false;
});
},
// when user leaved
onTapCancel: () {
setState(() {
pressing = false;
});
}
// the action to do when user tap
onTap: () {
// code...
}
);以下是文档:颤振GestureDetector文档
https://stackoverflow.com/questions/55547443
复制相似问题