使用时间差方案,实现防重复点击
class ThrottleUtil { static const Duration _KDelay = Duration(milliseconds: 500); var enable = true; ///防止重复点击 ///func 要执行的方法 Function throttle( Function func, { Duration delay = _KDelay, }) { return () { if (enable) { func(); enable = false; Future.delayed(delay, () { enable = true; }); } }; } }
使用方式:
//声明局部变量 ThrottleUtil throttleUtil = ThrottleUtil(); //点击事件 onPressed: throttleUtil.throttle(() { setState(() { _counter++; }); }
缺点:每个防重复点击的事件都需要持有各自的 throttleUtil 对象,throttleUtil 使用时间差进行判断重复点击,暂不支持混用。