refactor: rely on platform scroll physics and add scroll behavior tests

This commit is contained in:
R-Bharathraj
2026-09-18 17:01:17 +05:30
parent 5122eebc11
commit 4adc21a277
3 changed files with 110 additions and 18 deletions

View File

@@ -95,10 +95,15 @@ would mean scrolling back to the top just to change what you are looking at.
Shifts keeps its whole header fixed for the same reason — the Booked / Open /
History switch has to stay reachable.
Scrolling uses bouncing physics on every platform (`KrowScrollBehavior`). Under
a pinned header a rubber-band edge tells you that you have reached the end of
the content rather than the end of the screen; clamping just stops dead. The
overscroll glow is turned off, since the bounce already says it.
Scroll physics is left to the platform. Forcing bouncing everywhere looked
smoother on a long list and broke every short one: `ScrollView` hands any
vertical list without a controller an `AlwaysScrollableScrollPhysics`, applied
over whatever the behaviour returns, so the drag is accepted however little
content there is. Bouncing then let a list that already fits be dragged away
from the header, leaving a gap down the screen. Android's clamping accepts the
same drag and pins it to the boundary; iOS bounces, which is its own
convention. `KrowScrollBehavior` now only adds mouse and trackpad dragging for
the web and desktop builds.
Two deliberate exceptions: