@@ -11,6 +11,39 @@ import 'package:flutter_test/flutter_test.dart';
1111import '../widgets/semantics_tester.dart' ;
1212
1313void main () {
14+ // Regression test for https://github.com/flutter/flutter/issues/103741
15+ testWidgets ('extendBodyBehindAppBar change should not cause the body widget lose state' , (WidgetTester tester) async {
16+ final ScrollController controller = ScrollController ();
17+ Widget buildFrame ({required bool extendBodyBehindAppBar}) {
18+ return MediaQuery (
19+ data: const MediaQueryData (),
20+ child: Directionality (
21+ textDirection: TextDirection .ltr,
22+ child: Scaffold (
23+ extendBodyBehindAppBar: extendBodyBehindAppBar,
24+ resizeToAvoidBottomInset: false ,
25+ body: SingleChildScrollView (
26+ controller: controller,
27+ child: const FlutterLogo (
28+ size: 1107 ,
29+ ),
30+ ),
31+ ),
32+ ),
33+ );
34+ }
35+
36+ await tester.pumpWidget (buildFrame (extendBodyBehindAppBar: true ));
37+ expect (controller.position.pixels, 0.0 );
38+
39+ controller.jumpTo (100.0 );
40+ await tester.pump ();
41+ expect (controller.position.pixels, 100.0 );
42+
43+ await tester.pumpWidget (buildFrame (extendBodyBehindAppBar: false ));
44+ expect (controller.position.pixels, 100.0 );
45+ });
46+
1447 testWidgets ('Scaffold drawer callback test' , (WidgetTester tester) async {
1548 bool isDrawerOpen = false ;
1649 bool isEndDrawerOpen = false ;
@@ -2401,6 +2434,8 @@ void main() {
24012434 ' ancestor was:\n '
24022435 ' Builder\n '
24032436 ' The ancestors of this widget were:\n '
2437+ ' MediaQuery\n '
2438+ ' LayoutBuilder\n '
24042439 ' _BodyBuilder\n '
24052440 ' MediaQuery\n '
24062441 ' LayoutId-[<_ScaffoldSlot.body>]\n '
0 commit comments