debounceWithArgs<T> static method

(void Function(T), void Function()) debounceWithArgs<T>(
  1. void func(
    1. T
    ),
  2. Duration delay
)

防抖函数(带参数)

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

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

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

示例:

final (debouncedFn, cancel) = FuncUtils.debounceWithArgs(
  (String text) => print(text),
  Duration(seconds: 1),
);

debouncedFn('hello'); // 1秒后执行
debouncedFn('world'); // 重新计时,1秒后执行

Implementation

static (void Function(T), void Function()) debounceWithArgs<T>(
  void Function(T) func,
  Duration delay,
) {
  Timer? timer;
  void debouncedFn(T arg) {
    timer?.cancel();
    timer = Timer(delay, () => func(arg));
  }

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

  return (debouncedFn, cancel);
}