getTargetPageForFocus method

  1. @override
double getTargetPageForFocus(
  1. double focusPage, {
  2. double velocity = 0,
  3. Tolerance tolerance = Tolerance.defaultTolerance,
})
override

Implementation

@override
double getTargetPageForFocus(
  double focusPage, {
  double velocity = 0,
  Tolerance tolerance = Tolerance.defaultTolerance,
}) {
  // Taken from [_InteractiveViewerState._kDrag].
  const kDrag = 0.0000135;
  final simulation =
      FrictionSimulation(kDrag, focusPage, velocity, tolerance: tolerance);
  final targetFocusPage = simulation.finalX;

  final alignmentOffset = alignmentDate.datePage % swipeRange;
  final alignmentDifference =
      (targetFocusPage.floor() - alignmentDate.datePage) % swipeRange;
  final alignmentCorrectedTargetPage = targetFocusPage - alignmentDifference;
  final swipeAlignedTargetPage =
      (alignmentCorrectedTargetPage / swipeRange).floor() * swipeRange;
  return (alignmentOffset + swipeAlignedTargetPage).toDouble();
}