captureReactiveNode function

ReactiveNode? captureReactiveNode(
  1. Readable readable
)

Returns the backing ReactiveNode for readable, if one can be resolved.

The readable value is read under a detached temporary effect so the node can be discovered without leaving a subscriber attached. Returns null when readable is not backed by a Jolt reactive node.

Example:

final count = Signal(0);
final node = captureReactiveNode(count);

Implementation

ReactiveNode? captureReactiveNode(Readable<dynamic> readable) {
  final sub = EffectNode(() {}, lazy: true, detach: true);
  final prevSub = setActiveSub(sub);

  try {
    readable.value;
  } finally {
    setActiveSub(prevSub);
  }

  final node = sub.depsTail?.dep ?? sub.deps?.dep;
  sub.flags = ReactiveFlags.none;
  purgeDeps(sub);
  return node;
}