Revert "fix a Scaffold extendBodyBehindAppBar update bug" (#106396)
diff --git a/packages/flutter/lib/src/material/scaffold.dart b/packages/flutter/lib/src/material/scaffold.dart
index 5d02f47..a18184b 100644
--- a/packages/flutter/lib/src/material/scaffold.dart
+++ b/packages/flutter/lib/src/material/scaffold.dart
@@ -875,6 +875,10 @@
@override
Widget build(BuildContext context) {
+ if (!extendBody && !extendBodyBehindAppBar) {
+ return body;
+ }
+
return LayoutBuilder(
builder: (BuildContext context, BoxConstraints constraints) {
final _BodyBoxConstraints bodyConstraints = constraints as _BodyBoxConstraints;
diff --git a/packages/flutter/test/material/scaffold_test.dart b/packages/flutter/test/material/scaffold_test.dart
index 888fa22..219fdf0 100644
--- a/packages/flutter/test/material/scaffold_test.dart
+++ b/packages/flutter/test/material/scaffold_test.dart
@@ -11,39 +11,6 @@
import '../widgets/semantics_tester.dart';
void main() {
- // Regression test for https://github.com/flutter/flutter/issues/103741
- testWidgets('extendBodyBehindAppBar change should not cause the body widget lose state', (WidgetTester tester) async {
- final ScrollController controller = ScrollController();
- Widget buildFrame({required bool extendBodyBehindAppBar}) {
- return MediaQuery(
- data: const MediaQueryData(),
- child: Directionality(
- textDirection: TextDirection.ltr,
- child: Scaffold(
- extendBodyBehindAppBar: extendBodyBehindAppBar,
- resizeToAvoidBottomInset: false,
- body: SingleChildScrollView(
- controller: controller,
- child: const FlutterLogo(
- size: 1107,
- ),
- ),
- ),
- ),
- );
- }
-
- await tester.pumpWidget(buildFrame(extendBodyBehindAppBar: true));
- expect(controller.position.pixels, 0.0);
-
- controller.jumpTo(100.0);
- await tester.pump();
- expect(controller.position.pixels, 100.0);
-
- await tester.pumpWidget(buildFrame(extendBodyBehindAppBar: false));
- expect(controller.position.pixels, 100.0);
- });
-
testWidgets('Scaffold drawer callback test', (WidgetTester tester) async {
bool isDrawerOpen = false;
bool isEndDrawerOpen = false;
@@ -2434,8 +2401,6 @@
' ancestor was:\n'
' Builder\n'
' The ancestors of this widget were:\n'
- ' MediaQuery\n'
- ' LayoutBuilder\n'
' _BodyBuilder\n'
' MediaQuery\n'
' LayoutId-[<_ScaffoldSlot.body>]\n'
diff --git a/packages/flutter/test/widgets/interactive_viewer_test.dart b/packages/flutter/test/widgets/interactive_viewer_test.dart
index a005d91..6834c56 100644
--- a/packages/flutter/test/widgets/interactive_viewer_test.dart
+++ b/packages/flutter/test/widgets/interactive_viewer_test.dart
@@ -1269,9 +1269,11 @@
testWidgets('LayoutBuilder is only used for InteractiveViewer.builder', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
- home: Center(
- child: InteractiveViewer(
- child: const SizedBox(width: 200.0, height: 200.0),
+ home: Scaffold(
+ body: Center(
+ child: InteractiveViewer(
+ child: const SizedBox(width: 200.0, height: 200.0),
+ ),
),
),
),
@@ -1281,11 +1283,13 @@
await tester.pumpWidget(
MaterialApp(
- home: Center(
- child: InteractiveViewer.builder(
- builder: (BuildContext context, Quad viewport) {
- return const SizedBox(width: 200.0, height: 200.0);
- },
+ home: Scaffold(
+ body: Center(
+ child: InteractiveViewer.builder(
+ builder: (BuildContext context, Quad viewport) {
+ return const SizedBox(width: 200.0, height: 200.0);
+ },
+ ),
),
),
),
diff --git a/packages/flutter/test/widgets/nested_scroll_view_test.dart b/packages/flutter/test/widgets/nested_scroll_view_test.dart
index 7f54f76..af4af7a 100644
--- a/packages/flutter/test/widgets/nested_scroll_view_test.dart
+++ b/packages/flutter/test/widgets/nested_scroll_view_test.dart
@@ -2360,35 +2360,37 @@
testWidgets('NestedScrollView works well when rebuilding during scheduleWarmUpFrame', (WidgetTester tester) async {
bool? isScrolled;
final Widget myApp = MaterialApp(
- home: StatefulBuilder(
- builder: (BuildContext context, StateSetter setState) {
- return Focus(
- onFocusChange: (_) => setState( (){} ),
- child: NestedScrollView(
- headerSliverBuilder: (BuildContext context, bool boxIsScrolled) {
- isScrolled = boxIsScrolled;
- return <Widget>[
- const SliverAppBar(
- expandedHeight: 200,
- title: Text('Test'),
- ),
- ];
- },
- body: CustomScrollView(
- slivers: <Widget>[
- SliverList(
- delegate: SliverChildBuilderDelegate(
- (BuildContext context, int index) {
- return const Text('');
- },
- childCount: 10,
+ home: Scaffold(
+ body: StatefulBuilder(
+ builder: (BuildContext context, StateSetter setState) {
+ return Focus(
+ onFocusChange: (_) => setState( (){} ),
+ child: NestedScrollView(
+ headerSliverBuilder: (BuildContext context, bool boxIsScrolled) {
+ isScrolled = boxIsScrolled;
+ return <Widget>[
+ const SliverAppBar(
+ expandedHeight: 200,
+ title: Text('Test'),
),
- ),
- ],
+ ];
+ },
+ body: CustomScrollView(
+ slivers: <Widget>[
+ SliverList(
+ delegate: SliverChildBuilderDelegate(
+ (BuildContext context, int index) {
+ return const Text('');
+ },
+ childCount: 10,
+ ),
+ ),
+ ],
+ ),
),
- ),
- );
- },
+ );
+ },
+ ),
),
);