Flutter:如何在手势检测器中暂时禁用onTap? [英] Flutter: How to disable onTap for a while in gesture detector?

查看:186
本文介绍了Flutter:如何在手势检测器中暂时禁用onTap?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a GestureDetector in a custom stateless view. when onTap triggered I show a snack bar that displays some info. When the user makes multiple clicks fast it keeps displaying the snack bar forever.

源代码

GestureDetector(
  onTap: () {  
    Clipboard.setData(new ClipboardData(text: idText));
    Scaffold.of(context).showSnackBar(SnackBar
      (content: Text('ID copied')));
  },
  child: Icon(Icons.content_copy,),
}

我想禁用 onTap 几秒钟,然后才能再次单击它。

I want to disable the onTap for seconds before it can be clicked again.

推荐答案

创建 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),
)

这篇关于Flutter:如何在手势检测器中暂时禁用onTap?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆