Skip to content

Commit 9f90f78

Browse files
committed
sticky_header [nfc]: Explicitly use single "childExtent"
This relies on (and expresses) an assumption in the new assertions: that the child's layoutExtent equals paintExtent. That assumption will be helpful in keeping this logic manageable to understand as we add an upcoming further wrinkle.
1 parent 2b96e43 commit 9f90f78

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

lib/widgets/sticky_header.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -579,6 +579,7 @@ class _RenderSliverStickyHeaderList extends RenderSliver with RenderSliverHelper
579579
assert(geometry.visible == (geometry.paintExtent > 0));
580580
assert(geometry.maxScrollObstructionExtent == 0);
581581
assert(geometry.crossAxisExtent == null);
582+
final childExtent = geometry.layoutExtent;
582583

583584
if (header != null) {
584585
header!.layout(constraints.asBoxConstraints(), parentUsesSize: true);
@@ -594,8 +595,8 @@ class _RenderSliverStickyHeaderList extends RenderSliver with RenderSliverHelper
594595
final paintedHeaderSize = calculatePaintOffset(constraints, from: 0, to: headerExtent);
595596
geometry = SliverGeometry( // TODO review interaction with other slivers
596597
scrollExtent: geometry.scrollExtent,
597-
layoutExtent: geometry.layoutExtent,
598-
paintExtent: math.max(geometry.paintExtent, paintedHeaderSize),
598+
layoutExtent: childExtent,
599+
paintExtent: math.max(childExtent, paintedHeaderSize),
599600
maxPaintExtent: math.max(geometry.maxPaintExtent, headerExtent),
600601
hasVisualOverflow: geometry.hasVisualOverflow
601602
|| headerExtent > constraints.remainingPaintExtent,
@@ -609,7 +610,7 @@ class _RenderSliverStickyHeaderList extends RenderSliver with RenderSliverHelper
609610
);
610611

611612
headerOffset = _headerAtCoordinateEnd()
612-
? geometry.layoutExtent - headerExtent
613+
? childExtent - headerExtent
613614
: 0.0;
614615
} else {
615616
// The header's item has [StickyHeaderItem.allowOverflow] false.
@@ -619,11 +620,11 @@ class _RenderSliverStickyHeaderList extends RenderSliver with RenderSliverHelper
619620
// The limiting edge of the header's item,
620621
// in the outer, non-scrolling coordinates.
621622
final endBoundAbsolute = axisDirectionIsReversed(constraints.growthAxisDirection)
622-
? geometry.layoutExtent - (_headerEndBound! - constraints.scrollOffset)
623+
? childExtent - (_headerEndBound! - constraints.scrollOffset)
623624
: _headerEndBound! - constraints.scrollOffset;
624625

625626
headerOffset = _headerAtCoordinateEnd()
626-
? math.max(geometry.layoutExtent - headerExtent, endBoundAbsolute)
627+
? math.max(childExtent - headerExtent, endBoundAbsolute)
627628
: math.min(0.0, endBoundAbsolute - headerExtent);
628629
}
629630

0 commit comments

Comments
 (0)