-
-
Notifications
You must be signed in to change notification settings - Fork 636
Description
Description
When using DismissiblePane
with swipe-to-dismiss functionality, if a user swipes past the dismissThreshold
but their finger moves slightly backward before lifting, the dismissal is cancelled and the pane settles into the open action pane state (showing the action buttons) instead of executing the dismiss. This happens even when the release occurs well past the threshold. This commonly occurs when rapidly swiping multiple items in succession and differs from native iOS swipe actions where crossing the threshold guarantees the action will execute on release.
Current Behavior
- User swipes past the threshold (e.g., 50% for delete action)
- Before lifting, finger moves slightly backward (common in rapid swipes)
- User releases while still well past the threshold
flutter_slidable
cancels the dismiss and animates to show the action pane- User must tap the action button or swipe again to complete the action
Expected Behavior
Once the threshold is crossed, releasing should always trigger the dismiss action, regardless of finger movement during release - matching iOS native behavior.
Example of good behavior from macOS Messages app (aligns with iOS behavior):
https://github.com/user-attachments/assets/59a4f83f-cf2c-4a68-bfec-0bae99f891fa
Solution in PR #537:
Reproduction Steps
- Create a Slidable with DismissiblePane
- Rapidly swipe past the dismissThreshold on multiple items
- Notice some swipes settle into the open action pane state when finger naturally moves backward before lifting
- Compare with native iOS swipe behavior which executes the action in this scenario
Impact
This creates a frustrating user experience, especially when performing batch operations where users rapidly swipe multiple items but some dismissals unexpectedly cancel and require additional interaction.