runSettleAnimation method
Future<void>
runSettleAnimation({
- required TickerProvider vsync,
- required double startValue,
- double targetValue = 0,
- required double initialVelocity,
- required ValueChanged<
double> onFrame, - VoidCallback? onSettle,
Implementation
Future<void> runSettleAnimation({
required TickerProvider vsync,
required double startValue,
double targetValue = 0,
required double initialVelocity,
required ValueChanged<double> onFrame,
VoidCallback? onSettle,
}) async {
start(
startValue: startValue,
targetValue: targetValue,
initialVelocity: initialVelocity,
);
final completer = Completer<void>();
Duration? previousElapsed;
late final Ticker ticker;
ticker = vsync.createTicker((elapsed) {
final previous = previousElapsed;
previousElapsed = elapsed;
if (previous == null) return;
final finished = step(
(elapsed - previous).inMicroseconds / Duration.microsecondsPerSecond,
);
onFrame(currentPosition);
if (finished) {
ticker.stop();
if (!completer.isCompleted) completer.complete();
}
});
ticker.start();
try {
await completer.future;
} finally {
ticker.dispose();
onSettle?.call();
}
}