Debounce на Dart

async dart utils

Реализация debounce на Dart

import 'dart:async';

Function createDebounce() {
  Timer? timer;

  return (Function callback, [int milliseconds = 500]) {
    timer?.cancel();
    timer = Timer(Duration(milliseconds: milliseconds), () {
      callback();
    });
  };
}
void main() {
  final debounce = createDebounce();

  void run() {
    debounce(() => print('Hello world!'), 500);
  }

  // Напечатается 1 раз с задержкой 500ms
  run();
  run();
  run(); // Hello world!
}