使用时间差方案,实现防重复点击
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 使用时间差进行判断重复点击,暂不支持混用。
网友评论