getTop method

double getTop(
  1. double cardHeight,
  2. double viewHeight,
  3. int i
)

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