debounce static method
防抖函数
延迟执行函数,如果在延迟期间再次调用,则重新计时
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);
}