如何在flutter中为按钮添加延迟

问题描述 投票:0回答:3

如何防止我尝试过的颤动中的按钮垃圾邮件

未来延迟

但它仍然可能被垃圾邮件发送,我相信我应该在 onPressed 之前添加此内容,但我无法这样做

flutter delay floating-action-button spam-prevention
3个回答
0
投票

您可以使用带有计时器的 AbsorbPointer 小部件来在操作后的一定时间内禁用操作,或者您可以简单地将

onTap
方法设置为
null
,而不使用
AbsorbPointer


0
投票

您可以创建一个标志,一旦用户按下按钮一次,您就可以将其设置为 false。然后在一段时间后该标志将再次变为 true。仅当 flag=true 时,按钮操作才会发生。

所以创建标志

bool goodToGo = true;

然后按下按钮

onPressed:(){
      if(!goodToGo){return;}
      if(goodToGo){debugPrint("Going to the moon!");}// do your thing
      goodToGo = false;
      Future.delayed(const Duration(milliseconds: 3000), () {
          goodToGo = true;
      });
}

0
投票

要为按钮的 onTap 回调添加延迟并避免多个不必要的手势(即用户不小心快速按下按钮两次导致 onTap 回调被调用两次),您应该使用布尔标志(例如 isTapped)。 例如:

  @override
  Widget build(BuildContext context) {
    bool isTapped = false;
    return ElevatedButton(
        onPressed: () async {
          if (!isTapped) {
            isTapped = true;
            await Future.delayed(const Duration(milliseconds: 160));
            
            Navigator.of(context).pushNamed('/textvoice');
            
            isTapped = false;
          }
        },
        child: const Text('delayed splash effect')
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.