Fix SliverPinnedPersistentHeader, also not able to update stretchConfiguration and showOnScreenConfiguration (#112043)

diff --git a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
index 754f493..f548e9b 100644
--- a/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
+++ b/packages/flutter/lib/src/widgets/sliver_persistent_header.dart
@@ -428,6 +428,13 @@
       showOnScreenConfiguration: delegate.showOnScreenConfiguration,
     );
   }
+
+  @override
+  void updateRenderObject(BuildContext context, covariant _RenderSliverPinnedPersistentHeaderForWidgets renderObject) {
+    renderObject
+      ..stretchConfiguration = delegate.stretchConfiguration
+      ..showOnScreenConfiguration = delegate.showOnScreenConfiguration;
+  }
 }
 
 class _RenderSliverPinnedPersistentHeaderForWidgets extends RenderSliverPinnedPersistentHeader
diff --git a/packages/flutter/test/widgets/sliver_persistent_header_test.dart b/packages/flutter/test/widgets/sliver_persistent_header_test.dart
index fe30f1e..8fb239f 100644
--- a/packages/flutter/test/widgets/sliver_persistent_header_test.dart
+++ b/packages/flutter/test/widgets/sliver_persistent_header_test.dart
@@ -36,6 +36,68 @@
         .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 {