debounce static method

(void Function(), void Function()) debounce(
  1. void func(),
  2. Duration delay
)

防抖函数

延迟执行函数,如果在延迟期间再次调用,则重新计时

func 要防抖的函数 delay 延迟时间

返回防抖后的函数和取消函数

示例:

final (debouncedFn, cancel) = FuncUtils.debounce(() {
  print('执行防抖操作');
}, Duration(seconds: 1));

debouncedFn(); // 1秒后执行
debouncedFn(); // 重新计时,1秒后执行
cancel(); // 取消执行

Implementation

static (void Function(), void Function()) debounce(
  void Function() func,
  Duration delay,
) {
  Timer? timer;
  void debouncedFn() {
    timer?.cancel();
    timer = Timer(delay, func);
  }

  void cancel() {
    timer?.cancel();
    timer = null;
  }

  return (debouncedFn, cancel);
}