debounce static method
防抖函数
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, []));
};
}