Skip to content

Commit 7b03839

Browse files
committed
sticky_header: Use cacheExtent from child
This is the right thing, as the comment explains. Conveniently it's also simpler.
1 parent 8cd5a28 commit 7b03839

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

lib/widgets/sticky_header.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)