mirror of
https://github.com/flutter/flutter
synced 2024-09-20 00:32:02 +00:00
[CP] Fix lower bound of children from TwoDimensionalChildBuilderDelegate (#132764)
Found in https://github.com/flutter/packages/pull/4536 The max x and max y index should allow for a case where there are no children in the viewport. This should be CP'd into stable once it lands.
This commit is contained in:
parent
e1e47221e8
commit
ff5b5b5fa6
|
@ -933,8 +933,8 @@ class TwoDimensionalChildBuilderDelegate extends TwoDimensionalChildDelegate {
|
|||
required this.builder,
|
||||
int? maxXIndex,
|
||||
int? maxYIndex,
|
||||
}) : assert(maxYIndex == null || maxYIndex >= 0),
|
||||
assert(maxXIndex == null || maxXIndex >= 0),
|
||||
}) : assert(maxYIndex == null || maxYIndex >= -1),
|
||||
assert(maxXIndex == null || maxXIndex >= -1),
|
||||
_maxYIndex = maxYIndex,
|
||||
_maxXIndex = maxXIndex;
|
||||
|
||||
|
@ -976,7 +976,9 @@ class TwoDimensionalChildBuilderDelegate extends TwoDimensionalChildDelegate {
|
|||
/// [TwoDimensionalViewport] subclass to learn how this value is applied in
|
||||
/// the specific use case.
|
||||
///
|
||||
/// If not null, the value must be non-negative.
|
||||
/// If not null, the value must be greater than or equal to -1, where -1
|
||||
/// indicates there will be no children at all provided to the
|
||||
/// [TwoDimensionalViewport].
|
||||
///
|
||||
/// If the value changes, the delegate will call [notifyListeners]. This
|
||||
/// informs the [RenderTwoDimensionalViewport] that any cached information
|
||||
|
@ -997,7 +999,7 @@ class TwoDimensionalChildBuilderDelegate extends TwoDimensionalChildDelegate {
|
|||
if (value == maxXIndex) {
|
||||
return;
|
||||
}
|
||||
assert(value == null || value >= 0);
|
||||
assert(value == null || value >= -1);
|
||||
_maxXIndex = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
@ -1020,7 +1022,7 @@ class TwoDimensionalChildBuilderDelegate extends TwoDimensionalChildDelegate {
|
|||
if (maxYIndex == value) {
|
||||
return;
|
||||
}
|
||||
assert(value == null || value >= 0);
|
||||
assert(value == null || value >= -1);
|
||||
_maxYIndex = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
|
|
@ -120,27 +120,29 @@ void main() {
|
|||
}
|
||||
);
|
||||
// Update
|
||||
delegate.maxXIndex = -1; // No exception.
|
||||
expect(
|
||||
() {
|
||||
delegate.maxXIndex = -1;
|
||||
delegate.maxXIndex = -2;
|
||||
},
|
||||
throwsA(
|
||||
isA<AssertionError>().having(
|
||||
(AssertionError error) => error.toString(),
|
||||
'description',
|
||||
contains('value == null || value >= 0'),
|
||||
contains('value == null || value >= -1'),
|
||||
),
|
||||
),
|
||||
);
|
||||
delegate.maxYIndex = -1; // No exception
|
||||
expect(
|
||||
() {
|
||||
delegate.maxYIndex = -1;
|
||||
delegate.maxYIndex = -2;
|
||||
},
|
||||
throwsA(
|
||||
isA<AssertionError>().having(
|
||||
(AssertionError error) => error.toString(),
|
||||
'description',
|
||||
contains('value == null || value >= 0'),
|
||||
contains('value == null || value >= -1'),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -148,7 +150,7 @@ void main() {
|
|||
expect(
|
||||
() {
|
||||
TwoDimensionalChildBuilderDelegate(
|
||||
maxXIndex: -1,
|
||||
maxXIndex: -2,
|
||||
maxYIndex: 0,
|
||||
builder: (BuildContext context, ChildVicinity vicinity) {
|
||||
return const SizedBox.shrink();
|
||||
|
@ -159,7 +161,7 @@ void main() {
|
|||
isA<AssertionError>().having(
|
||||
(AssertionError error) => error.toString(),
|
||||
'description',
|
||||
contains('maxXIndex == null || maxXIndex >= 0'),
|
||||
contains('maxXIndex == null || maxXIndex >= -1'),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -167,7 +169,7 @@ void main() {
|
|||
() {
|
||||
TwoDimensionalChildBuilderDelegate(
|
||||
maxXIndex: 0,
|
||||
maxYIndex: -1,
|
||||
maxYIndex: -2,
|
||||
builder: (BuildContext context, ChildVicinity vicinity) {
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
|
@ -177,7 +179,7 @@ void main() {
|
|||
isA<AssertionError>().having(
|
||||
(AssertionError error) => error.toString(),
|
||||
'description',
|
||||
contains('maxYIndex == null || maxYIndex >= 0'),
|
||||
contains('maxYIndex == null || maxYIndex >= -1'),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
|
Loading…
Reference in a new issue