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