SnappingSimulation constructor

SnappingSimulation({
  1. required double position,
  2. required double initialVelocity,
  3. required List<double> pixelSnapPositions,
  4. required Duration snapAnimationDuration,
  5. required double durationMultiplier,
  6. required double forceMultiplier,
  7. Tolerance tolerance = Tolerance.defaultTolerance,
})

Implementation

SnappingSimulation({
  required this.position,
  required double initialVelocity,
  required List<double> pixelSnapPositions,
  required Duration snapAnimationDuration,
  required this.durationMultiplier,
  required double forceMultiplier,
  super.tolerance,
}) {
  _pixelSnapPosition =
      _getSnapPosition(initialVelocity * forceMultiplier, pixelSnapPositions);
  const mircosecondsInSecond = 1000000;
  duration = initialVelocity != 0
      ? max(
          snapAnimationDuration.inMicroseconds / mircosecondsInSecond,
          ((position - _pixelSnapPosition) / initialVelocity).abs() *
              durationMultiplier /
              mircosecondsInSecond)
      : snapAnimationDuration.inMicroseconds /
          mircosecondsInSecond *
          durationMultiplier;

  velocityPixelsPerSecond = (_pixelSnapPosition - position) / duration;
}