refactor: improve _onEndAnimation legibility

This commit is contained in:
ricardodalarme 2024-01-09 15:07:06 -03:00
parent 3bf329de34
commit bfd9185284
1 changed files with 34 additions and 24 deletions

View File

@ -409,32 +409,42 @@ class _CardSwiperState<T extends Widget> extends State<CardSwiper>
} }
void _onEndAnimation() { void _onEndAnimation() {
final direction = _getEndAnimationDirection();
final isValidDirection = this._isValidDirection(direction);
if (isValidDirection) {
_swipe(direction);
} else {
_goBack();
}
}
CardSwiperDirection _getEndAnimationDirection() {
if (_cardAnimation.left.abs() > widget.threshold) { if (_cardAnimation.left.abs() > widget.threshold) {
final direction = _cardAnimation.left.isNegative return _cardAnimation.left.isNegative
? CardSwiperDirection.left ? CardSwiperDirection.left
: CardSwiperDirection.right; : CardSwiperDirection.right;
if (direction == CardSwiperDirection.left &&
widget.allowedSwipeDirection.left ||
direction == CardSwiperDirection.right &&
widget.allowedSwipeDirection.right) {
_swipe(direction);
} else {
_goBack();
} }
} else if (_cardAnimation.top.abs() > widget.threshold) { if (_cardAnimation.top.abs() > widget.threshold) {
final direction = _cardAnimation.top.isNegative return _cardAnimation.top.isNegative
? CardSwiperDirection.top ? CardSwiperDirection.top
: CardSwiperDirection.bottom; : CardSwiperDirection.bottom;
if (direction == CardSwiperDirection.top &&
widget.allowedSwipeDirection.up ||
direction == CardSwiperDirection.bottom &&
widget.allowedSwipeDirection.down) {
_swipe(direction);
} else {
_goBack();
} }
} else { return CardSwiperDirection.none;
_goBack(); }
bool _isValidDirection(CardSwiperDirection direction) {
switch (direction) {
case CardSwiperDirection.left:
return widget.allowedSwipeDirection.left;
case CardSwiperDirection.right:
return widget.allowedSwipeDirection.right;
case CardSwiperDirection.top:
return widget.allowedSwipeDirection.up;
case CardSwiperDirection.bottom:
return widget.allowedSwipeDirection.down;
default:
return false;
} }
} }