Skip to content

Commit 5c96642

Browse files
authored
Update menu examples for SafeArea (#132390)
fixes [Some of the menu examples don't contain `SafeArea`](flutter/flutter#132388) ### Description This fixes the menu examples for running on mobile with a safe area. ![Group 2](https://github.com/flutter/flutter/assets/48603081/0d460c00-60f5-45e0-87ee-c010ede9ee42)
1 parent 491ba23 commit 5c96642

10 files changed

+79
-7
lines changed

examples/api/lib/material/menu_anchor/checkbox_menu_button.0.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,9 @@ class MenuApp extends StatelessWidget {
101101

102102
@override
103103
Widget build(BuildContext context) {
104-
return const MaterialApp(
105-
home: Scaffold(body: MyCheckboxMenu(message: kMessage)),
104+
return MaterialApp(
105+
theme: ThemeData(useMaterial3: true),
106+
home: const Scaffold(body: SafeArea(child: MyCheckboxMenu(message: kMessage))),
106107
);
107108
}
108109
}

examples/api/lib/material/menu_anchor/menu_accelerator_label.0.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ class MenuAcceleratorApp extends StatelessWidget {
110110
debugDumpApp();
111111
}),
112112
},
113-
child: const Scaffold(body: MyMenuBar()),
113+
child: const Scaffold(body: SafeArea(child: MyMenuBar())),
114114
),
115115
);
116116
}

examples/api/lib/material/menu_anchor/menu_anchor.0.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ class MenuApp extends StatelessWidget {
204204
Widget build(BuildContext context) {
205205
return MaterialApp(
206206
theme: ThemeData(useMaterial3: true),
207-
home: const Scaffold(body: MyCascadingMenu(message: kMessage)),
207+
home: const Scaffold(body: SafeArea(child: MyCascadingMenu(message: kMessage))),
208208
);
209209
}
210210
}

examples/api/lib/material/menu_anchor/menu_bar.0.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ class MenuBarApp extends StatelessWidget {
230230
@override
231231
Widget build(BuildContext context) {
232232
return const MaterialApp(
233-
home: Scaffold(body: MyMenuBar(message: kMessage)),
233+
home: Scaffold(body: SafeArea(child: MyMenuBar(message: kMessage))),
234234
);
235235
}
236236
}

examples/api/lib/material/menu_anchor/radio_menu_button.0.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,9 @@ class MenuApp extends StatelessWidget {
107107

108108
@override
109109
Widget build(BuildContext context) {
110-
return const MaterialApp(
111-
home: Scaffold(body: MyRadioMenu()),
110+
return MaterialApp(
111+
theme: ThemeData(useMaterial3: true),
112+
home: const Scaffold(body: SafeArea(child: MyRadioMenu())),
112113
);
113114
}
114115
}

examples/api/test/material/menu_anchor/checkbox_menu_button.0_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,18 @@ void main() {
2424
expect(find.text('Show Message'), findsNothing);
2525
expect(find.text(example.MenuApp.kMessage), findsOneWidget);
2626
});
27+
28+
testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async {
29+
const double safeAreaPadding = 100.0;
30+
await tester.pumpWidget(
31+
const MediaQuery(
32+
data: MediaQueryData(
33+
padding: EdgeInsets.symmetric(vertical: safeAreaPadding),
34+
),
35+
child: example.MenuApp(),
36+
),
37+
);
38+
39+
expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding));
40+
});
2741
}

examples/api/test/material/menu_anchor/menu_accelerator_label.0_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,4 +51,18 @@ void main() {
5151
await tester.pumpAndSettle();
5252
expect(find.text('Close'), findsNothing);
5353
});
54+
55+
testWidgets('MenuBar is wrapped in a SafeArea', (WidgetTester tester) async {
56+
const double safeAreaPadding = 100.0;
57+
await tester.pumpWidget(
58+
const MediaQuery(
59+
data: MediaQueryData(
60+
padding: EdgeInsets.symmetric(vertical: safeAreaPadding),
61+
),
62+
child: example.MenuAcceleratorApp(),
63+
),
64+
);
65+
66+
expect(tester.getTopLeft(find.byType(MenuBar)), const Offset(0.0, safeAreaPadding));
67+
});
5468
}

examples/api/test/material/menu_anchor/menu_anchor.0_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,18 @@ void main() {
104104

105105
expect(find.text('Last Selected: ${example.MenuEntry.colorBlue.label}'), findsOneWidget);
106106
});
107+
108+
testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async {
109+
const double safeAreaPadding = 100.0;
110+
await tester.pumpWidget(
111+
const MediaQuery(
112+
data: MediaQueryData(
113+
padding: EdgeInsets.symmetric(vertical: safeAreaPadding),
114+
),
115+
child: example.MenuApp(),
116+
),
117+
);
118+
119+
expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding));
120+
});
107121
}

examples/api/test/material/menu_anchor/menu_bar.0_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,18 @@ void main() {
9191

9292
expect(find.text('Last Selected: Blue Background'), findsOneWidget);
9393
});
94+
95+
testWidgets('MenuBar is wrapped in a SafeArea', (WidgetTester tester) async {
96+
const double safeAreaPadding = 100.0;
97+
await tester.pumpWidget(
98+
const MediaQuery(
99+
data: MediaQueryData(
100+
padding: EdgeInsets.symmetric(vertical: safeAreaPadding),
101+
),
102+
child: example.MenuBarApp(),
103+
),
104+
);
105+
106+
expect(tester.getTopLeft(find.byType(MenuBar)), const Offset(0.0, safeAreaPadding));
107+
});
94108
}

examples/api/test/material/menu_anchor/radio_menu_button.0_test.dart

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,4 +74,18 @@ void main() {
7474
expect(tester.widget<Radio<Color>>(find.descendant(of: find.byType(RadioMenuButton<Color>).at(2), matching: find.byType(Radio<Color>))).groupValue, equals(Colors.blue));
7575
expect(tester.widget<Container>(find.byType(Container)).color, equals(Colors.blue));
7676
});
77+
78+
testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async {
79+
const double safeAreaPadding = 100.0;
80+
await tester.pumpWidget(
81+
const MediaQuery(
82+
data: MediaQueryData(
83+
padding: EdgeInsets.symmetric(vertical: safeAreaPadding),
84+
),
85+
child: example.MenuApp(),
86+
),
87+
);
88+
89+
expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding));
90+
});
7791
}

0 commit comments

Comments
 (0)