I am working with a scrollable list of widgets that can change size along the scroll axis. When these size changes take place, I would like the scroll position to remain anchored to the start of the viewport, even if it means the viewport is now overscrolled.
I have created a Dartpad here to demonstrate the issue. If you expand the tiles until the viewport begins to scroll, then scroll to the last expanded tile and collapse it, the list will automatically scroll back up to keep the bottom of the list as close to the bottom of the viewport as possible. I want to disable this behavior and instead have empty space appear below the list as necessary to prevent any items before the collapsing tile from changing position.
I have attempted various combinations of different built-in scroll physics and slivers, but none produced the desired effect. My expectation at this point is that a full solution will require custom implementations of at least some of the scroll APIs, but I am unsure which specific APIs would be best: ScrollPhysics, a custom Sliver, some other combination of APIs, etc. Any guidance on where to best start customizing this aspect of the scroll behavior would be greatly appreciated.