如何防止我尝试过的颤动中的按钮垃圾邮件
未来延迟
但它仍然可能被垃圾邮件发送,我相信我应该在 onPressed 之前添加此内容,但我无法这样做
您可以创建一个标志,一旦用户按下按钮一次,您就可以将其设置为 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;
});
}
要为按钮的 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')
);
}