unwatched function

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

Cleans up dependency links when a node no longer has subscribers.

Parameters:

  • node: Node that lost its last subscriber

Example:

final link = dep.subs!; // Link between dep and subscriber
if (link.dep.subs == null) {
  unwatched(link.dep);
}

Implementation

@pragma("vm:prefer-inline")
@pragma("wasm:prefer-inline")
@pragma("dart2js:prefer-inline")
@override
void unwatched(ReactiveNode node) {
  if (node is EffectBaseReactiveNode) {
    // if (!node.flags.hasAny(ReactiveFlags.mutable)) {
    // ignore: discarded_futures
    node.dispose();
  } else if (node.depsTail != null) {
    node
      ..depsTail = null
      ..flags = (ReactiveFlags.mutable | ReactiveFlags.dirty);
    purgeDeps(node);
  }
}