一尘不染

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

flutter

我有一个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几秒钟,然后才能再次单击它。


阅读 429

收藏
2020-08-13

共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             
        }
      : null, // disable onTap if condition is false
  child: Icon(Icons.content_copy,),
),
2020-08-13