debounce static method

dynamic debounce(
  1. Function func,
  2. StackTrace key, {
  3. Duration duration = const Duration(milliseconds: 500),
})

函数防抖

Implementation

// StackTrace.current
static debounce(
    Function func,
    StackTrace key, {
      Duration duration = const Duration(milliseconds: 500),
    }) {
  MYCustomTrace programInfo = MYCustomTrace(key);
  String _key = '${programInfo.fileName}_${programInfo.lineNumber}_debounce';
  if (!XUtil.enableMap.containsKey(_key)) {
    XUtil.enableMap.addAll({_key: null});
  }
  if (XUtil.enableMap[_key]?.isActive ?? false) {
    XUtil.enableMap[_key]?.cancel();
  }
  XUtil.enableMap[_key] = Timer(duration, () {
    func.call();
    XUtil.enableMap[_key]?.cancel();
  });
}