Files
stream-chat-flutter/packages/stream_chat/lib/src/debounce.dart
T

29 lines
592 B
Dart

import 'dart:async';
import 'package:meta/meta.dart';
/// Map of timeouts being debounced
Map<Function, Timer> timeouts = {};
/// Runs a function avoiding calling it too many times in a [timeoutMS] window
void debounce({
@required Duration timeout,
@required Function target,
List positionalArguments,
Map<Symbol, dynamic> namedArguments,
}) {
if (timeouts.containsKey(target)) {
timeouts[target].cancel();
}
final timer = Timer(timeout, () {
Function.apply(
target,
positionalArguments,
namedArguments,
);
});
timeouts[target] = timer;
}