Fix SliverPinnedPersistentHeader, also not able to update stretchConfiguration and showOnScreenConfiguration (#112043)
This commit is contained in:
parent
fa2d770c60
commit
97e09c8a78
@ -428,6 +428,13 @@ class _SliverPinnedPersistentHeader extends _SliverPersistentHeaderRenderObjectW
|
||||
showOnScreenConfiguration: delegate.showOnScreenConfiguration,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void updateRenderObject(BuildContext context, covariant _RenderSliverPinnedPersistentHeaderForWidgets renderObject) {
|
||||
renderObject
|
||||
..stretchConfiguration = delegate.stretchConfiguration
|
||||
..showOnScreenConfiguration = delegate.showOnScreenConfiguration;
|
||||
}
|
||||
}
|
||||
|
||||
class _RenderSliverPinnedPersistentHeaderForWidgets extends RenderSliverPinnedPersistentHeader
|
||||
|
@ -36,6 +36,68 @@ void main() {
|
||||
.first;
|
||||
expect(render.stretchConfiguration?.stretchTriggerOffset, 20);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'_SliverPinnedPersistentHeader should update stretchConfiguration',
|
||||
(WidgetTester tester) async {
|
||||
for (final double stretchTriggerOffset in <double>[10.0, 20.0]) {
|
||||
await tester.pumpWidget(MaterialApp(
|
||||
home: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
SliverPersistentHeader(
|
||||
pinned: true,
|
||||
delegate: TestDelegate(
|
||||
stretchConfiguration: OverScrollHeaderStretchConfiguration(
|
||||
stretchTriggerOffset: stretchTriggerOffset,
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
expect(
|
||||
tester.allWidgets.where((Widget w) =>
|
||||
w.runtimeType.toString() == '_SliverPinnedPersistentHeader'),
|
||||
isNotEmpty);
|
||||
|
||||
final RenderSliverPinnedPersistentHeader render = tester.allRenderObjects
|
||||
.whereType<RenderSliverPinnedPersistentHeader>()
|
||||
.first;
|
||||
expect(render.stretchConfiguration?.stretchTriggerOffset, 20);
|
||||
});
|
||||
|
||||
testWidgets(
|
||||
'_SliverPinnedPersistentHeader should update showOnScreenConfiguration',
|
||||
(WidgetTester tester) async {
|
||||
for (final double maxShowOnScreenExtent in <double>[1000, 2000]) {
|
||||
await tester.pumpWidget(MaterialApp(
|
||||
home: CustomScrollView(
|
||||
slivers: <Widget>[
|
||||
SliverPersistentHeader(
|
||||
pinned: true,
|
||||
delegate: TestDelegate(
|
||||
showOnScreenConfiguration:
|
||||
PersistentHeaderShowOnScreenConfiguration(
|
||||
maxShowOnScreenExtent: maxShowOnScreenExtent),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
expect(
|
||||
tester.allWidgets.where((Widget w) =>
|
||||
w.runtimeType.toString() == '_SliverPinnedPersistentHeader'),
|
||||
isNotEmpty);
|
||||
|
||||
final RenderSliverPinnedPersistentHeader render = tester.allRenderObjects
|
||||
.whereType<RenderSliverPinnedPersistentHeader>()
|
||||
.first;
|
||||
expect(render.showOnScreenConfiguration?.maxShowOnScreenExtent, 2000);
|
||||
});
|
||||
}
|
||||
|
||||
class TestDelegate extends SliverPersistentHeaderDelegate {
|
||||
|
Loading…
x
Reference in New Issue
Block a user