alignmentFromPosition static method

double alignmentFromPosition(
  1. Offset globalPosition,
  2. BuildContext context,
  3. int itemCount
)

Converts global drag position to alignment with rubber band resistance.

Implementation

static double alignmentFromPosition(
  Offset globalPosition,
  BuildContext context,
  int itemCount,
) {
  final box = context.findRenderObject()! as RenderBox;
  final localPosition = box.globalToLocal(globalPosition);

  final indicatorWidth = 1.0 / itemCount;
  final draggableRange = 1.0 - indicatorWidth;
  final padding = indicatorWidth / 2;

  final rawRelativeX = (localPosition.dx / box.size.width).clamp(0.0, 1.0);
  final normalizedX = (rawRelativeX - padding) / draggableRange;
  final adjustedRelativeX = applyRubberBandResistance(normalizedX);

  return (adjustedRelativeX * 2) - 1;
}