Fill in SliverConstraints fields missing from ==, hashCode, toString (#143661)

I was doing some debugging on a RenderSliver subclass, and found
that SliverConstraints.toString was missing the precedingScrollExtent
field.

Add that, and add both that field and userScrollDirection to the
`==` and hashCode implementations, which had been skipping them,
so that all three methods now handle all the class's fields.
This commit is contained in:
Greg Price 2024-03-05 19:23:18 -08:00 committed by GitHub
parent a431dee5c9
commit 6b9d3ea4fc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 59 additions and 54 deletions

View file

@ -556,7 +556,9 @@ class SliverConstraints extends Constraints {
assert(other.debugAssertIsValid());
return other.axisDirection == axisDirection
&& other.growthDirection == growthDirection
&& other.userScrollDirection == userScrollDirection
&& other.scrollOffset == scrollOffset
&& other.precedingScrollExtent == precedingScrollExtent
&& other.overlap == overlap
&& other.remainingPaintExtent == remainingPaintExtent
&& other.crossAxisExtent == crossAxisExtent
@ -570,7 +572,9 @@ class SliverConstraints extends Constraints {
int get hashCode => Object.hash(
axisDirection,
growthDirection,
userScrollDirection,
scrollOffset,
precedingScrollExtent,
overlap,
remainingPaintExtent,
crossAxisExtent,
@ -587,6 +591,7 @@ class SliverConstraints extends Constraints {
'$growthDirection',
'$userScrollDirection',
'scrollOffset: ${scrollOffset.toStringAsFixed(1)}',
'precedingScrollExtent: ${precedingScrollExtent.toStringAsFixed(1)}',
'remainingPaintExtent: ${remainingPaintExtent.toStringAsFixed(1)}',
if (overlap != 0.0) 'overlap: ${overlap.toStringAsFixed(1)}',
'crossAxisExtent: ${crossAxisExtent.toStringAsFixed(1)}',

View file

@ -90,10 +90,10 @@ void main() {
' │ │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ │ crossAxisDirection: AxisDirection.right,\n'
' │ │ viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
' │ │ cacheOrigin: 0.0)\n'
' │ │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ │ crossAxisExtent: 800.0, crossAxisDirection:\n'
' │ │ AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
' │ │ remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ │ geometry: SliverGeometry(scrollExtent: 400.0, paintExtent: 400.0,\n'
' │ │ maxPaintExtent: 400.0, cacheExtent: 400.0)\n'
' │ │\n'
@ -106,10 +106,10 @@ void main() {
' │ │ parentData: paintOffset=Offset(0.0, 400.0) (can use size)\n'
' │ │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ │ 0.0, remainingPaintExtent: 200.0, crossAxisExtent: 800.0,\n'
' │ │ crossAxisDirection: AxisDirection.right,\n'
' │ │ viewportMainAxisExtent: 600.0, remainingCacheExtent: 450.0,\n'
' │ │ cacheOrigin: 0.0)\n'
' │ │ 0.0, precedingScrollExtent: 400.0, remainingPaintExtent: 200.0,\n'
' │ │ crossAxisExtent: 800.0, crossAxisDirection:\n'
' │ │ AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
' │ │ remainingCacheExtent: 450.0, cacheOrigin: 0.0)\n'
' │ │ geometry: SliverGeometry(scrollExtent: 400.0, paintExtent: 200.0,\n'
' │ │ maxPaintExtent: 400.0, hasVisualOverflow: true, cacheExtent:\n'
' │ │ 400.0)\n'
@ -123,10 +123,10 @@ void main() {
' │ │ parentData: paintOffset=Offset(0.0, 800.0) (can use size)\n'
' │ │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ │ 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 800.0,\n'
' │ │ crossAxisDirection: AxisDirection.right,\n'
' │ │ viewportMainAxisExtent: 600.0, remainingCacheExtent: 50.0,\n'
' │ │ cacheOrigin: 0.0)\n'
' │ │ 0.0, precedingScrollExtent: 800.0, remainingPaintExtent: 0.0,\n'
' │ │ crossAxisExtent: 800.0, crossAxisDirection:\n'
' │ │ AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
' │ │ remainingCacheExtent: 50.0, cacheOrigin: 0.0)\n'
' │ │ geometry: SliverGeometry(scrollExtent: 400.0, hidden,\n'
' │ │ maxPaintExtent: 400.0, hasVisualOverflow: true, cacheExtent:\n'
' │ │ 50.0)\n'
@ -140,10 +140,10 @@ void main() {
' │ │ parentData: paintOffset=Offset(0.0, 1200.0) (can use size)\n'
' │ │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ │ 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 800.0,\n'
' │ │ crossAxisDirection: AxisDirection.right,\n'
' │ │ viewportMainAxisExtent: 600.0, remainingCacheExtent: 0.0,\n'
' │ │ cacheOrigin: 0.0)\n'
' │ │ 0.0, precedingScrollExtent: 1200.0, remainingPaintExtent: 0.0,\n'
' │ │ crossAxisExtent: 800.0, crossAxisDirection:\n'
' │ │ AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
' │ │ remainingCacheExtent: 0.0, cacheOrigin: 0.0)\n'
' │ │ geometry: SliverGeometry(scrollExtent: 400.0, hidden,\n'
' │ │ maxPaintExtent: 400.0, hasVisualOverflow: true)\n'
' │ │\n'
@ -156,10 +156,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 1600.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 0.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 0.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 1600.0, remainingPaintExtent: 0.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 0.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 400.0, hidden,\n'
' │ maxPaintExtent: 400.0, hasVisualOverflow: true)\n'
'\n'
@ -977,7 +977,7 @@ void main() {
' The "precedingScrollExtent" is NaN, expected greater than or equal to zero.\n'
' The constraints are not normalized.\n'
'The offending constraints were:\n'
' SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: NaN, remainingPaintExtent: NaN, overlap: NaN, crossAxisExtent: NaN, crossAxisDirection: AxisDirection.left, viewportMainAxisExtent: NaN, remainingCacheExtent: NaN, cacheOrigin: NaN)',
' SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: NaN, precedingScrollExtent: NaN, remainingPaintExtent: NaN, overlap: NaN, crossAxisExtent: NaN, crossAxisDirection: AxisDirection.left, viewportMainAxisExtent: NaN, remainingCacheExtent: NaN, cacheOrigin: NaN)',
);
threw = true;
}
@ -1013,7 +1013,7 @@ void main() {
' The "precedingScrollExtent" is negative.\n'
' The constraints are not normalized.\n'
'The offending constraints were:\n'
' SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: -1.0, remainingPaintExtent: -1.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.left, viewportMainAxisExtent: 0.0, remainingCacheExtent: -1.0, cacheOrigin: 1.0)',
' SliverConstraints(AxisDirection.down, GrowthDirection.forward, ScrollDirection.idle, scrollOffset: -1.0, precedingScrollExtent: -1.0, remainingPaintExtent: -1.0, crossAxisExtent: 0.0, crossAxisDirection: AxisDirection.left, viewportMainAxisExtent: 0.0, remainingCacheExtent: -1.0, cacheOrigin: 1.0)',
);
threw = true;
}

View file

@ -316,10 +316,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 40000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 40000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 850.0)\n'
@ -330,10 +330,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 40000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 40000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 850.0)\n'
@ -491,10 +491,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 2000.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
'crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 1100.0,\n'
'cacheOrigin: -250.0)\n'
' │ 2000.0, precedingScrollExtent: 0.0, remainingPaintExtent:\n'
'600.0, crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 1100.0, cacheOrigin: -250.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 40000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 40000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 1100.0)\n'
@ -505,10 +505,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 2000.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
'crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 1100.0,\n'
'cacheOrigin: -250.0)\n'
' │ 2000.0, precedingScrollExtent: 0.0, remainingPaintExtent:\n'
'600.0, crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 1100.0, cacheOrigin: -250.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 40000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 40000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 1100.0)\n'

View file

@ -336,10 +336,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 300.0, paintExtent: 300.0,\n'
' │ maxPaintExtent: 300.0, cacheExtent: 300.0)\n'
' │ currently live children: 0 to 2\n'

View file

@ -70,10 +70,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 12000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 12000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 850.0)\n'
@ -83,10 +83,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 12000.0, paintExtent:\n'
' │ 600.0, maxPaintExtent: 12000.0, hasVisualOverflow: true,\n'
' │ cacheExtent: 850.0)\n'

View file

@ -88,10 +88,10 @@ void main() {
' │ parentData: paintOffset=Offset(0.0, 0.0) (can use size)\n'
' │ constraints: SliverConstraints(AxisDirection.down,\n'
' │ GrowthDirection.forward, ScrollDirection.idle, scrollOffset:\n'
' │ 0.0, remainingPaintExtent: 600.0, crossAxisExtent: 800.0,\n'
' │ crossAxisDirection: AxisDirection.right,\n'
'viewportMainAxisExtent: 600.0, remainingCacheExtent: 850.0,\n'
'cacheOrigin: 0.0)\n'
' │ 0.0, precedingScrollExtent: 0.0, remainingPaintExtent: 600.0,\n'
' │ crossAxisExtent: 800.0, crossAxisDirection:\n'
'AxisDirection.right, viewportMainAxisExtent: 600.0,\n'
'remainingCacheExtent: 850.0, cacheOrigin: 0.0)\n'
' │ geometry: SliverGeometry(scrollExtent: 200.0, paintExtent: 200.0,\n'
' │ maxPaintExtent: 200.0, hasVisualOverflow: true, cacheExtent:\n'
' │ 200.0)\n'