unlink function
Unlinks a dependency from a subscriber.
Parameters:
link: The link to unlinksub: Optional subscriber node
Returns: The next dependency link, or null if none
Example:
final link = dep.subs!;
final next = unlink(link);
Implementation
@pragma("vm:prefer-inline")
@pragma("wasm:prefer-inline")
@pragma("dart2js:prefer-inline")
Link? unlink(Link link, [ReactiveNode? sub]) {
sub ??= link.sub;
final dep = link.dep;
final prevDep = link.prevDep;
final nextDep = link.nextDep;
final nextSub = link.nextSub;
final prevSub = link.prevSub;
if (nextDep != null) {
nextDep.prevDep = prevDep;
} else {
sub.depsTail = prevDep;
}
if (prevDep != null) {
prevDep.nextDep = nextDep;
} else {
sub.deps = nextDep;
}
if (nextSub != null) {
nextSub.prevSub = prevSub;
} else {
dep.subsTail = prevSub;
}
if (prevSub != null) {
prevSub.nextSub = nextSub;
} else if ((dep.subs = nextSub) == null) {
unwatched(dep);
}
JoltDebug.unlinked(dep);
return nextDep;
}