pause method

  1. @override
void pause()
override

Pauses the watcher, preventing it from responding to changes.

When paused, the watcher will:

  • Stop responding to changes in watched sources
  • Clear its dependencies
  • Maintain its paused state until resume is called

You can call pause multiple times; it is idempotent. After pausing, use resume to re-enable the watcher and re-collect dependencies.

Example:

final signal = Signal(1);
final values = <int>[];
final watcher = Watcher(
  () => signal.value,
  (newValue, _) => values.add(newValue),
);

signal.value = 2; // Triggers
expect(values, equals([2]));

watcher.pause();
signal.value = 3; // Does not trigger
expect(values, equals([2]));

watcher.resume();
signal.value = 4; // Triggers again
expect(values, equals([2, 4]));

Implementation

@override
void pause() {
  assert(!isDisposed, "Watcher is disposed");
  _isPaused = true;
  cycle++;
  depsTail = null;
  purgeDeps(this);
  flags = ReactiveFlags.watching;
}