pause method
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;
}