frontCardAlign static method

Animation<Alignment> frontCardAlign(
  1. AnimationController controller,
  2. Alignment beginAlign,
  3. Alignment baseAlign,
  4. double swipeEdge,
  5. bool swipeUp,
  6. bool swipeDown,
)

Implementation

static Animation<Alignment> frontCardAlign(
  AnimationController controller,
  Alignment beginAlign,
  Alignment baseAlign,
  double swipeEdge,
  bool swipeUp,
  bool swipeDown,
) {
  double endX, endY;

  if (_TinderSwapCardState._trigger == TriggerDirection.none) {
    endX = beginAlign.x > 0
        ? (beginAlign.x > swipeEdge ? beginAlign.x + 10.0 : baseAlign.x)
        : (beginAlign.x < -swipeEdge ? beginAlign.x - 10.0 : baseAlign.x);
    endY = beginAlign.x > 3.0 || beginAlign.x < -swipeEdge
        ? beginAlign.y
        : baseAlign.y;

    if (swipeUp || swipeDown) {
      if (beginAlign.y < 0) {
        if (swipeUp) {
          endY =
              beginAlign.y < -swipeEdge ? beginAlign.y - 10.0 : baseAlign.y;
        }
      } else if (beginAlign.y > 0) {
        if (swipeDown) {
          endY = beginAlign.y > swipeEdge ? beginAlign.y + 10.0 : baseAlign.y;
        }
      }
    }
  } else if (_TinderSwapCardState._trigger == TriggerDirection.left) {
    endX = beginAlign.x - swipeEdge;
    endY = beginAlign.y + 0.5;
  }
  /* Trigger Swipe Up or Down */
  else if (_TinderSwapCardState._trigger == TriggerDirection.up ||
      _TinderSwapCardState._trigger == TriggerDirection.down) {
    var beginY =
        _TinderSwapCardState._trigger == TriggerDirection.up ? -10 : 10;

    endY = beginY < -swipeEdge ? beginY - 10.0 : baseAlign.y;

    endX = beginAlign.x > 0
        ? (beginAlign.x > swipeEdge ? beginAlign.x + 10.0 : baseAlign.x)
        : (beginAlign.x < -swipeEdge ? beginAlign.x - 10.0 : baseAlign.x);
  } else {
    endX = beginAlign.x + swipeEdge;
    endY = beginAlign.y + 0.5;
  }
  return AlignmentTween(
    begin: beginAlign,
    end: Alignment(endX, endY),
  ).animate(
    CurvedAnimation(
      parent: controller,
      curve: Curves.easeOut,
    ),
  );
}