pause method

  1. @override
void pause()
override

Pauses the watcher and clears its current dependency list.

Changes that happen while paused do not invoke the callback. The next call to resume re-collects dependencies and can replay the latest source value.

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() {
  _isPaused = true;
  cycle++;
  raw.depsTail = null;
  purgeDeps(raw);
  raw.flags = ReactiveFlags.watching;
}