getTargetPageForFocus method
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();
}