Description
Internal: b/144318472
Consolidated from
- Let scrollbars avoid obstructing slivers and media query paddings #13253
- RefreshIndicator should appear from the top of the dragged widget where the [GlowingOverscrollIndicator] appears position. #71819
- GlowingOverscrollIndicator doesn't respect SliverOverlapInjector #79081
It is a common issue across the framework where a widget that positions itself on the edge of a viewport, and reacts to scroll notifications will undesirably overlap some scrolling content that is also aligned with the edge of the viewport.
I have been considering solutions for #13253 for a while, and discovered the issue is not specific to scrollbars. There are a number of places where this issue is present. I am capturing them all here for tracking and testing.
The following are widgets I have identified that would want to report inset information in a scroll notification:
SliverAppBar
SliverPersistentHeader
CupertinoSliverNavigationBar
SliverOverlapAbsorber/Injector
(NestedScrollView)
And these are the widgets I have identified as wanting to know about this inset information so they can position themselves as expected, on the edge of the above widgets rather than the absolute edge of the viewport:
StretchingOverscrollIndicator
- Should start the stretch after the header rather than applying stretch to the header.
GlowingOverscrollIndicator
- GlowingOverscrollIndicator doesn't respect SliverOverlapInjector #79081
- Should appear at the edge of headers, rather than on top of them
RefreshIndicator
- RefreshIndicator should appear from the top of the dragged widget where the [GlowingOverscrollIndicator] appears position. #71819
- Should appear from under the edge of the header, rather than on top of it
Scrollbar
- Let scrollbars avoid obstructing slivers and media query paddings #13253
- The track should not extend up over the header
MaterialBanner
- Should animate into view from the edge of the header.
I have a proposal almost ready for this, see #107182