import 'dart:async'; import 'dart:ui'; // 防抖:只执行最后一次 extension DebounceExtension on VoidCallback { VoidCallback debounce([Duration? duration]) { Timer? timer; return () { timer?.cancel(); timer = Timer(duration ?? const Duration(milliseconds: 200), this); }; } } // 节流:固定时间只执行一次 extension ThrottleExtension on VoidCallback { VoidCallback throttle([Duration? duration]) { bool isThrottled = false; return () { if (isThrottled) return; this(); // 执行原函数 isThrottled = true; Timer(duration ?? const Duration(seconds: 1000), () { isThrottled = false; }); }; } }