update method
Implementation
void update(double dt) {
if (!_running) return;
_elapsed = (_elapsed + dt).clamp(0.0, duration);
value = _elapsed / duration;
onFrame?.call(value, _elapsed);
if (value >= 1.0) {
_running = false;
onFrame?.call(1.0, _elapsed);
onComplete?.call();
}
}