unwatched method

  1. @override
void unwatched(
  1. ReactiveNode node
)
override

Called when a node no longer has any subscribers.

Computed nodes become dirty and release their dependencies lazily, signals stay alive, and effect-like nodes are stopped immediately.

Implementation

@override
void unwatched(ReactiveNode node) {
  switch (node) {
    case ComputedNode():
      if (node.depsTail != null) {
        node.flags =
            17 /*ReactiveFlags.mutable | ReactiveFlags.dirty*/
                as ReactiveFlags;
        disposeAllDepsInReverse(node);
      }
    case SignalNode():
      break;
    case EffectNode():
      stopEffect(node);
    case EffectScopeNode():
      stopScope(node);
    case _:
      stop(node);
  }
}