getCardPosition method

double getCardPosition(
  1. int index
)

Implementation

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

  final double nearWidgetWidth = centerWidgetWidth / 5 * 4;
  final double farWidgetWidth = centerWidgetWidth / 5 * 3;

  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);
    }
  }
}