首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振:如何在手势检测器中暂时禁用onTap?

颤振:如何在手势检测器中暂时禁用onTap?
EN

Stack Overflow用户
提问于 2019-04-06 08:56:48
回答 4查看 23.1K关注 0票数 22

我在自定义的无状态视图中有一个GestureDetector。当onTap触发时,我会显示一个显示一些信息的快餐店。当用户多次快速点击时,它就会永远显示快餐店。

源代码

代码语言:javascript
运行
复制
GestureDetector(
  onTap: () {  
    Clipboard.setData(new ClipboardData(text: idText));
    Scaffold.of(context).showSnackBar(SnackBar
      (content: Text('ID copied')));
  },
  child: Icon(Icons.content_copy,),
}

在再次单击onTap之前,我希望禁用它几秒钟。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-04-06 09:02:11

创建一个bool标志并定义一个方法:

代码语言:javascript
运行
复制
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...          
}

使用:

代码语言:javascript
运行
复制
GestureDetector(
  onTap: _enabled ? _onTap: null,
  child: Icon(Icons.content_copy),
)
票数 32
EN

Stack Overflow用户

发布于 2019-10-24 07:02:58

将其包装在一个AbsorbPointer

代码语言:javascript
运行
复制
var shouldAbsorb = true;

AbsorbPointer(
    absorbing: shouldAbsorb,
    child: GestureDetector(
      onTap: () {
        Navigator.of(context).pop();
      },
      child: Container(
        color: Colors.red,
      ),
    ),
  )
票数 23
EN

Stack Overflow用户

发布于 2020-02-02 21:50:44

就我个人而言,我使用来自GestureDetector的另外两种方法

onTapDown:当用户按下小部件时。

onTapUp:当用户离开小部件时。

onTap:是按下然后按下的时候。如果用户的手指滑入太多颤音,就像取消点击。

onTapCancel:当用户取消。

代码语言:javascript
运行
复制
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文档

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55547443

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档