throttle method
截流函数 在触发事件时,当即执行目标操做,同时给出一个延迟的时间,在该时间范围内若是再次触发了事件,该次事件会被忽略,直到超过该时间范围后触发事件才会被处理。 如设定延迟时间为 1000ms , 若是在 1000ms 内再次触发事件,该事件会被忽略 若是 1000ms 延迟结束,则事件不会被忽略,触发事件会当即执行目标操做,并再次开启 1000ms 延迟
Implementation
Function() throttle([Duration delay = const Duration(seconds: 1)]) {
bool enable = _funcThrottle[hashCode] ?? true;
return () {
if (enable) {
_funcThrottle[hashCode] = false;
this.call();
delay.delayed(() {
_funcThrottle.remove(hashCode);
});
}
};
}