SpringDescription.withDurationAndBounce constructor
Creates a SpringDescription based on a desired animation duration and bounce.
This provides an intuitive way to define a spring based on its visual
properties, duration
and bounce
. Check the properties' documentation
for their definition.
This constructor produces the same result as SwiftUI's
spring(duration:bounce:blendDuration:)
animation.
link
final SpringDescription spring = SpringDescription.withDurationAndBounce(
duration: const Duration(milliseconds: 300),
bounce: 0.3,
);
See also:
- SpringDescription, which creates a spring by explicitly providing physical parameters.
- SpringDescription.withDampingRatio, which creates a spring with a damping ratio and other physical parameters.
Implementation
factory SpringDescription.withDurationAndBounce({
Duration duration = const Duration(milliseconds: 500),
double bounce = 0.0,
}) {
assert(duration.inMilliseconds > 0, 'Duration must be positive');
final double durationInSeconds = duration.inMilliseconds / Duration.millisecondsPerSecond;
const double mass = 1.0;
final double stiffness = (4 * math.pi * math.pi * mass) / math.pow(durationInSeconds, 2);
final double dampingRatio = bounce > 0 ? (1.0 - bounce) : (1 / (bounce + 1));
final double damping = dampingRatio * 2.0 * math.sqrt(mass * stiffness);
return SpringDescription(mass: mass, stiffness: stiffness, damping: damping);
}