getComputed<T> function
Get the current value of a computed, updating if necessary
Implementation
@pragma('vm:prefer-inline')
@pragma('wasm:prefer-inline')
@pragma('dart2js:prefer-inline')
T getComputed<T>(Computed<T> computed) {
final flags = computed.flags;
if (flags & (ReactiveFlags.dirty) != 0 ||
(flags & (ReactiveFlags.pending) != 0 &&
(checkDirty(computed.deps!, computed) ||
_removePending(computed, flags)))) {
if (updateComputed(computed)) {
final subs = computed.subs;
if (subs != null) {
shallowPropagate(subs);
}
JoltDebug.set(computed);
}
} else if (flags == (ReactiveFlags.none)) {
computed.flags = (ReactiveFlags.mutable | ReactiveFlags.recursedCheck);
final prevSub = setActiveSub(computed);
try {
computed.pendingValue = computed.getter();
} finally {
activeSub = prevSub;
computed.flags &= ~(ReactiveFlags.recursedCheck);
}
JoltDebug.set(computed);
}
final sub = activeSub;
if (sub != null) {
link(computed, sub, cycle);
}
JoltDebug.get(computed);
return computed.pendingValue as T;
}