Skip to content

Commit

Permalink
fix hero animation when drag-dismissing WoltModalSheet
Browse files Browse the repository at this point in the history
- Refactor drag handling logic for vertical and horizontal dismissals
- Add minimum value check to prevent unintended dismissals
- Use pattern matching for vertical drag direction
- Ensure consistent animation controller value updates
  • Loading branch information
ArinFaraj committed Feb 24, 2025
1 parent cb7adae commit 2f96278
Showing 1 changed file with 18 additions and 14 deletions.
32 changes: 18 additions & 14 deletions lib/src/widgets/wolt_modal_sheet_drag_to_dismiss_detector.dart
Original file line number Diff line number Diff line change
Expand Up @@ -86,16 +86,14 @@ class WoltModalSheetDragToDismissDetector extends StatelessWidget {
}

final deltaDiff = details.primaryDelta! / _childHeight;

switch (_dismissDirection) {
case WoltModalDismissDirection.down:
_animationController.value -= deltaDiff;
break;
case WoltModalDismissDirection.up:
_animationController.value += deltaDiff;
break;
default:
break;
final newValue = switch (_dismissDirection) {
WoltModalDismissDirection.down => _animationController.value - deltaDiff,
WoltModalDismissDirection.up => _animationController.value + deltaDiff,
_ => _animationController.value,
};

if (newValue >= 0.01) {
_animationController.value = newValue;
}
}

Expand Down Expand Up @@ -157,24 +155,30 @@ class WoltModalSheetDragToDismissDetector extends StatelessWidget {
}

final delta = -details.primaryDelta! / _childWidth;
double newValue = _animationController.value;

switch (_dismissDirection) {
case WoltModalDismissDirection.startToEnd:
if (Directionality.of(context) == TextDirection.ltr) {
_animationController.value -= delta;
newValue -= delta;
} else {
_animationController.value += delta;
newValue += delta;
}
break;
case WoltModalDismissDirection.endToStart:
if (Directionality.of(context) == TextDirection.ltr) {
_animationController.value += delta;
newValue += delta;
} else {
_animationController.value -= delta;
newValue -= delta;
}
break;
default:
break;
}

if (newValue >= 0.01) {
_animationController.value = newValue;
}
}

void _handleHorizontalDragEnd(BuildContext context, DragEndDetails details) {
Expand Down

0 comments on commit 2f96278

Please sign in to comment.