fix: lock drawer intent during interactive drags#547
Open
lukemmtt wants to merge 1 commit intoletsar:masterfrom
Open
fix: lock drawer intent during interactive drags#547lukemmtt wants to merge 1 commit intoletsar:masterfrom
lukemmtt wants to merge 1 commit intoletsar:masterfrom
Conversation
Locks the drawer side inferred at the start of a continuous drag so reversing across neutral no longer activates the opposite action pane mid-gesture. Adds a resisted rubber-band movement while the user pulls toward the non-inferred side, then resets the intent only after the drag settles back to neutral. Covers the behavior with LTR, RTL, neutral-reset, and already-open-pane regression tests. This is the same UX class as upstream issue letsar#311.
lukemmtt
added a commit
to TimeFinderApp/flutter_slidable
that referenced
this pull request
Apr 23, 2026
Adds the updated after-capture GIF used in upstream PR letsar#547 so the embedded media shows the overscrolled release settling back to neutral with animation instead of appearing to jump.
lukemmtt
added a commit
to TimeFinderApp/flutter_slidable
that referenced
this pull request
Apr 23, 2026
Adds the updated after-capture GIF used in upstream PR letsar#547 so the embedded media shows the overscrolled release settling back to neutral with animation instead of appearing to jump.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This locks action-pane intent for a continuous interactive drag so the slidable cannot switch to the opposite pane after crossing neutral in the same gesture.
The controller now infers the pane direction once per drag, or reuses the already-open pane when a drag begins from an open state.
If the user reverses past neutral before releasing, the slidable keeps the originally inferred pane active and shows only a small resisted rubber-band offset.
If the user releases from that overscrolled state, the child animates back to neutral instead of jumping.
Programmatic open and close flows are unchanged, and there are no public API changes.
Before & After
Tests
fvm flutter test test/controller_test.dart test/slidable_test.dart test/dismissal_test.dartCloses #546