pause method

void pause()

Pauses the debouncer, cancelling active timers.

Any pending action will be resumed when resume is called.

Implementation

void pause() {
  _ensureNotDisposed();
  if (_isPaused) {
    _logDebug('Already paused, ignoring pause call');
    return;
  }
  _isPaused = true;
  // Capture remaining time for main timer.
  if (_timer != null && _lastCallTime != null) {
    final elapsed = DateTime.now().difference(_lastCallTime!);
    final remaining = _delay - elapsed;
    _remainingDelayOnPause = remaining.isNegative ? Duration.zero : remaining;
    _timer?.cancel();
    _timer = null;
  }
  // Capture remaining time for maxWait timer.
  if (_maxWaitTimer != null && _firstCallTime != null && _maxWait != null) {
    final elapsed = DateTime.now().difference(_firstCallTime!);
    final remaining = _maxWait - elapsed;
    _remainingMaxWaitOnPause =
        remaining.isNegative ? Duration.zero : remaining;
    _maxWaitTimer?.cancel();
    _maxWaitTimer = null;
  }
  _logDebug('Debouncer paused.');
  _publishState();
}