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