getTop method
Implementation
double getTop(double cardHeight, double viewHeight, int i) {
double diff = (currentPostion! - i);
double diffAbs = diff.abs();
double basePosition = (viewHeight / 2) - (cardHeight / 2);
if (diffAbs == 0) {
return basePosition;
}
if (diffAbs > 0.0 && diffAbs <= 1.0) {
if (diff >= 0) {
return basePosition - (cardMaxHeight * (6 / 9)) * diffAbs;
} else {
return basePosition + (cardMaxHeight * (6 / 9)) * diffAbs;
}
} else if (diffAbs > 1.0 && diffAbs < 2.0) {
if (diff >= 0) {
return basePosition -
(cardMaxHeight * (6 / 9)) -
cardMaxHeight * (2 / 9) * (diffAbs - diffAbs.floor()).abs();
} else {
return basePosition +
(cardMaxHeight * (6 / 9)) +
cardMaxHeight * (2 / 9) * (diffAbs - diffAbs.floor()).abs();
}
} else {
if (diff >= 0) {
return basePosition - cardMaxHeight * (8 / 9);
} else {
return basePosition + cardMaxHeight * (8 / 9);
}
}
}