颤动:如何在手势检测器中禁用onTap一段时间?

问题描述 投票:2回答:1

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

source code

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

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

dart flutter
1个回答
1
投票

您可以使用

bool _condition = true;
//...

GestureDetector(
  onTap: _condition
      ? () {
          // making it false when onTap() is pressed and after 1 second we'll make it true
          setState(() => _condition = false);
          Timer(Duration(seconds: 1), () => setState(() => _condition = true));

          // your implementation
          Clipboard.setData(new ClipboardData(text: idText));
          Scaffold.of(context).showSnackBar(SnackBar
              (content: Text('ID copied')));
        }
      : null, // disable onTap if condition is false
  child: Icon(Icons.content_copy,),
),
© www.soinside.com 2019 - 2024. All rights reserved.