update method
Recomputes getter and updates the cached value.
Returns true when the new result is not equal to the previous result
according to equals or !=.
Implementation
@override
bool update() {
if (flags & ReactiveFlags.hasChildEffect != 0) {
var link = depsTail;
while (link != null) {
final prev = link.prevDep;
final dep = link.dep;
if (dep is BaseEffectNode) {
unlink(link, this);
}
link = prev;
}
}
this
..depsTail = null
..flags = ReactiveFlags.mutable | ReactiveFlags.recursedCheck;
final prevSub = setActiveSub(this);
try {
++cycle;
final oldValue = value;
final newValue = getter();
final isNotEqual = switch (equals == null) {
true => oldValue != newValue,
false => !equals!(newValue, oldValue),
};
value = newValue;
if (isNotEqual) {
assert(() {
JoltDevTools.set(this);
return true;
}());
}
return isNotEqual;
} finally {
activeSub = prevSub;
flags &= ~ReactiveFlags.recursedCheck;
purgeDeps(this);
}
}