debounce method

dynamic Function() debounce([
  1. Duration delay = const Duration(seconds: 1)
])

函数防抖 在触发事件时,不当即执行目标操做,而是给出一个延迟的时间,在该时间范围内若是再次触发了事件,则重置延迟时间,直到延迟时间结束才会执行目标操做 如设定延迟时间为 1000ms 若是在 1000ms 内没有再次触发事件,则执行目标操做 若是在 1000ms 内再次触发了事件,则重置延迟时间,从新开始 1000ms 的延迟,直到 1000ms 结束执行目标操做

Implementation

Function() debounce([Duration delay = const Duration(seconds: 1)]) {
  Timer? timer;
  return () {
    if (timer?.isActive ?? false) timer?.cancel();
    timer = Timer(delay, () => this.call());
  };
}