debounce static method

Function debounce(
  1. Function func, {
  2. Duration duration = const Duration(milliseconds: 300),
})

防抖函数 callback 需要执行的函数 duration 防抖时间 防抖函数 func 需要防抖的函数 duration 防抖时间 @example

final debouncedFunc = Tools.debounce(() {
  // 这里是需要防抖的函数
}, duration: Duration(milliseconds: 300));
debouncedFunc(); // 调用防抖函数

注意:每次调用debounce都会返回一个新的防抖函数,不同的防抖函数实例之间互不干扰 如果需要多个不同的防抖实例,可以为每个实例创建独立的防抖函数

Implementation

//  Timer? _debounceTimer;
//  void debounce(
//   Function callback, {
//   Duration duration = const Duration(milliseconds: 300),
// }) {
//   if (_debounceTimer?.isActive ?? false) {
//     _debounceTimer?.cancel();
//   }
//   _debounceTimer = Timer(duration, () {
//     callback();
//   });
// }

/// 防抖函数
/// [func] 需要防抖的函数
/// [duration] 防抖时间
/// @example
/// ```dart
/// final debouncedFunc = Tools.debounce(() {
///   // 这里是需要防抖的函数
/// }, duration: Duration(milliseconds: 300));
/// debouncedFunc(); // 调用防抖函数
/// ```
///
/// 注意:每次调用debounce都会返回一个新的防抖函数,不同的防抖函数实例之间互不干扰
/// 如果需要多个不同的防抖实例,可以为每个实例创建独立的防抖函数
static Function debounce(
  Function func, {
  Duration duration = const Duration(milliseconds: 300),
}) {
  Timer? timer;
  return () {
    timer?.cancel();
    timer = Timer(duration, () => Function.apply(func, []));
  };
}