getCardPosition method

double getCardPosition(
  1. int index
)

Implementation

double getCardPosition(int index) {
  final double center = maxWidth / 2;
  final double basePosition = center - centerWidgetWidth / 2;

  final distance = currentPagePosition - index;

  if (distance == 0) {
    return basePosition;
  } else if (distance.abs() > 0.0 && distance.abs() <= 1.0) {
    if (distance > 0) {
      return basePosition - nearWidgetWidth * distance.abs();
    } else {
      return basePosition + centerWidgetWidth * distance.abs();
    }
  } else if (distance.abs() >= 1.0 && distance.abs() <= 2.0) {
    if (distance > 0) {
      return (basePosition - nearWidgetWidth) -
          farWidgetWidth * (distance.abs() - 1);
    } else {
      return (basePosition + centerWidgetWidth + nearWidgetWidth) +
          farWidgetWidth * (distance.abs() - 2) -
          (nearWidgetWidth - farWidgetWidth) *
              ((distance - distance.floor()));
    }
  } else {
    if (distance > 0) {
      return (basePosition - nearWidgetWidth) -
          farWidgetWidth * (distance.abs() - 1);
    } else {
      return (basePosition + centerWidgetWidth + nearWidgetWidth) +
          farWidgetWidth * (distance.abs() - 2);
    }
  }
}