debounce function

dynamic debounce(
  1. VoidCallback fn, {
  2. Duration time = const Duration(milliseconds: 500),
  3. VoidCallback? onCancel,
})

防抖方法,time 时间内触发的 fn 方法都会被取消

Implementation

debounce(
  VoidCallback fn, {
  Duration time = const Duration(milliseconds: 500),
  VoidCallback? onCancel,
}) {
  // 还在时间之内,抛弃上一次
  if (_timer?.isActive ?? false) {
    _timer!.cancel();
    onCancel?.call();
  }

  _timer = Timer(time, fn);
}