@@ -568,17 +568,21 @@ class _RenderSliverStickyHeaderList extends RenderSliver with RenderSliverHelper
568568 // and even if the whole child is smaller than the header.
569569
570570 final paintedHeaderSize = calculatePaintOffset (constraints, from: 0 , to: headerExtent);
571- final cacheExtent = calculateCacheOffset (constraints, from: 0 , to: headerExtent);
572-
573571 geometry = SliverGeometry ( // TODO review interaction with other slivers
574572 scrollExtent: geometry.scrollExtent,
575573 layoutExtent: geometry.layoutExtent,
576574 paintExtent: math.max (geometry.paintExtent, paintedHeaderSize),
577- cacheExtent: math.max (geometry.cacheExtent, cacheExtent),
578575 maxPaintExtent: math.max (geometry.maxPaintExtent, headerExtent),
579576 hitTestExtent: math.max (geometry.hitTestExtent, paintedHeaderSize),
580577 hasVisualOverflow: geometry.hasVisualOverflow
581578 || headerExtent > constraints.remainingPaintExtent,
579+
580+ // The cache extent is an extension of layout, not paint; it controls
581+ // where the next sliver should start laying out content. (See
582+ // [SliverConstraints.remainingCacheExtent].) The header isn't meant
583+ // to affect where the next sliver gets laid out, so it shouldn't
584+ // affect the cache extent.
585+ cacheExtent: geometry.cacheExtent,
582586 );
583587
584588 headerOffset = _headerAtCoordinateEnd ()
0 commit comments