From 5c96642fa0598195237d67cae6e282db82576e2a Mon Sep 17 00:00:00 2001 From: Taha Tesser Date: Mon, 14 Aug 2023 23:30:01 +0300 Subject: [PATCH] Update menu examples for `SafeArea` (#132390) fixes [Some of the menu examples don't contain `SafeArea`](https://github.com/flutter/flutter/issues/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) --- .../menu_anchor/checkbox_menu_button.0.dart | 5 +++-- .../menu_anchor/menu_accelerator_label.0.dart | 2 +- .../lib/material/menu_anchor/menu_anchor.0.dart | 2 +- .../api/lib/material/menu_anchor/menu_bar.0.dart | 2 +- .../material/menu_anchor/radio_menu_button.0.dart | 5 +++-- .../menu_anchor/checkbox_menu_button.0_test.dart | 14 ++++++++++++++ .../menu_anchor/menu_accelerator_label.0_test.dart | 14 ++++++++++++++ .../material/menu_anchor/menu_anchor.0_test.dart | 14 ++++++++++++++ .../test/material/menu_anchor/menu_bar.0_test.dart | 14 ++++++++++++++ .../menu_anchor/radio_menu_button.0_test.dart | 14 ++++++++++++++ 10 files changed, 79 insertions(+), 7 deletions(-) diff --git a/examples/api/lib/material/menu_anchor/checkbox_menu_button.0.dart b/examples/api/lib/material/menu_anchor/checkbox_menu_button.0.dart index 6279b6e222..8a6066f7ce 100644 --- a/examples/api/lib/material/menu_anchor/checkbox_menu_button.0.dart +++ b/examples/api/lib/material/menu_anchor/checkbox_menu_button.0.dart @@ -101,8 +101,9 @@ class MenuApp extends StatelessWidget { @override Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold(body: MyCheckboxMenu(message: kMessage)), + return MaterialApp( + theme: ThemeData(useMaterial3: true), + home: const Scaffold(body: SafeArea(child: MyCheckboxMenu(message: kMessage))), ); } } diff --git a/examples/api/lib/material/menu_anchor/menu_accelerator_label.0.dart b/examples/api/lib/material/menu_anchor/menu_accelerator_label.0.dart index 802cb9c66d..5e09ef9328 100644 --- a/examples/api/lib/material/menu_anchor/menu_accelerator_label.0.dart +++ b/examples/api/lib/material/menu_anchor/menu_accelerator_label.0.dart @@ -110,7 +110,7 @@ class MenuAcceleratorApp extends StatelessWidget { debugDumpApp(); }), }, - child: const Scaffold(body: MyMenuBar()), + child: const Scaffold(body: SafeArea(child: MyMenuBar())), ), ); } diff --git a/examples/api/lib/material/menu_anchor/menu_anchor.0.dart b/examples/api/lib/material/menu_anchor/menu_anchor.0.dart index 413879d665..d4a3de7dec 100644 --- a/examples/api/lib/material/menu_anchor/menu_anchor.0.dart +++ b/examples/api/lib/material/menu_anchor/menu_anchor.0.dart @@ -204,7 +204,7 @@ class MenuApp extends StatelessWidget { Widget build(BuildContext context) { return MaterialApp( theme: ThemeData(useMaterial3: true), - home: const Scaffold(body: MyCascadingMenu(message: kMessage)), + home: const Scaffold(body: SafeArea(child: MyCascadingMenu(message: kMessage))), ); } } diff --git a/examples/api/lib/material/menu_anchor/menu_bar.0.dart b/examples/api/lib/material/menu_anchor/menu_bar.0.dart index 23ccec1099..b769630027 100644 --- a/examples/api/lib/material/menu_anchor/menu_bar.0.dart +++ b/examples/api/lib/material/menu_anchor/menu_bar.0.dart @@ -230,7 +230,7 @@ class MenuBarApp extends StatelessWidget { @override Widget build(BuildContext context) { return const MaterialApp( - home: Scaffold(body: MyMenuBar(message: kMessage)), + home: Scaffold(body: SafeArea(child: MyMenuBar(message: kMessage))), ); } } diff --git a/examples/api/lib/material/menu_anchor/radio_menu_button.0.dart b/examples/api/lib/material/menu_anchor/radio_menu_button.0.dart index 20448926d3..3976c88d37 100644 --- a/examples/api/lib/material/menu_anchor/radio_menu_button.0.dart +++ b/examples/api/lib/material/menu_anchor/radio_menu_button.0.dart @@ -107,8 +107,9 @@ class MenuApp extends StatelessWidget { @override Widget build(BuildContext context) { - return const MaterialApp( - home: Scaffold(body: MyRadioMenu()), + return MaterialApp( + theme: ThemeData(useMaterial3: true), + home: const Scaffold(body: SafeArea(child: MyRadioMenu())), ); } } diff --git a/examples/api/test/material/menu_anchor/checkbox_menu_button.0_test.dart b/examples/api/test/material/menu_anchor/checkbox_menu_button.0_test.dart index 76d27b5693..5251505868 100644 --- a/examples/api/test/material/menu_anchor/checkbox_menu_button.0_test.dart +++ b/examples/api/test/material/menu_anchor/checkbox_menu_button.0_test.dart @@ -24,4 +24,18 @@ void main() { expect(find.text('Show Message'), findsNothing); expect(find.text(example.MenuApp.kMessage), findsOneWidget); }); + + testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async { + const double safeAreaPadding = 100.0; + await tester.pumpWidget( + const MediaQuery( + data: MediaQueryData( + padding: EdgeInsets.symmetric(vertical: safeAreaPadding), + ), + child: example.MenuApp(), + ), + ); + + expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding)); + }); } diff --git a/examples/api/test/material/menu_anchor/menu_accelerator_label.0_test.dart b/examples/api/test/material/menu_anchor/menu_accelerator_label.0_test.dart index 9cf332dd69..89cadb7db3 100644 --- a/examples/api/test/material/menu_anchor/menu_accelerator_label.0_test.dart +++ b/examples/api/test/material/menu_anchor/menu_accelerator_label.0_test.dart @@ -51,4 +51,18 @@ void main() { await tester.pumpAndSettle(); expect(find.text('Close'), findsNothing); }); + + testWidgets('MenuBar is wrapped in a SafeArea', (WidgetTester tester) async { + const double safeAreaPadding = 100.0; + await tester.pumpWidget( + const MediaQuery( + data: MediaQueryData( + padding: EdgeInsets.symmetric(vertical: safeAreaPadding), + ), + child: example.MenuAcceleratorApp(), + ), + ); + + expect(tester.getTopLeft(find.byType(MenuBar)), const Offset(0.0, safeAreaPadding)); + }); } diff --git a/examples/api/test/material/menu_anchor/menu_anchor.0_test.dart b/examples/api/test/material/menu_anchor/menu_anchor.0_test.dart index dcbabb2cba..11a6becc68 100644 --- a/examples/api/test/material/menu_anchor/menu_anchor.0_test.dart +++ b/examples/api/test/material/menu_anchor/menu_anchor.0_test.dart @@ -104,4 +104,18 @@ void main() { expect(find.text('Last Selected: ${example.MenuEntry.colorBlue.label}'), findsOneWidget); }); + + testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async { + const double safeAreaPadding = 100.0; + await tester.pumpWidget( + const MediaQuery( + data: MediaQueryData( + padding: EdgeInsets.symmetric(vertical: safeAreaPadding), + ), + child: example.MenuApp(), + ), + ); + + expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding)); + }); } diff --git a/examples/api/test/material/menu_anchor/menu_bar.0_test.dart b/examples/api/test/material/menu_anchor/menu_bar.0_test.dart index ccfe4c9357..1ba69519c1 100644 --- a/examples/api/test/material/menu_anchor/menu_bar.0_test.dart +++ b/examples/api/test/material/menu_anchor/menu_bar.0_test.dart @@ -91,4 +91,18 @@ void main() { expect(find.text('Last Selected: Blue Background'), findsOneWidget); }); + + testWidgets('MenuBar is wrapped in a SafeArea', (WidgetTester tester) async { + const double safeAreaPadding = 100.0; + await tester.pumpWidget( + const MediaQuery( + data: MediaQueryData( + padding: EdgeInsets.symmetric(vertical: safeAreaPadding), + ), + child: example.MenuBarApp(), + ), + ); + + expect(tester.getTopLeft(find.byType(MenuBar)), const Offset(0.0, safeAreaPadding)); + }); } diff --git a/examples/api/test/material/menu_anchor/radio_menu_button.0_test.dart b/examples/api/test/material/menu_anchor/radio_menu_button.0_test.dart index 2b88a77522..bbc91423e8 100644 --- a/examples/api/test/material/menu_anchor/radio_menu_button.0_test.dart +++ b/examples/api/test/material/menu_anchor/radio_menu_button.0_test.dart @@ -74,4 +74,18 @@ void main() { expect(tester.widget>(find.descendant(of: find.byType(RadioMenuButton).at(2), matching: find.byType(Radio))).groupValue, equals(Colors.blue)); expect(tester.widget(find.byType(Container)).color, equals(Colors.blue)); }); + + testWidgets('MenuAnchor is wrapped in a SafeArea', (WidgetTester tester) async { + const double safeAreaPadding = 100.0; + await tester.pumpWidget( + const MediaQuery( + data: MediaQueryData( + padding: EdgeInsets.symmetric(vertical: safeAreaPadding), + ), + child: example.MenuApp(), + ), + ); + + expect(tester.getTopLeft(find.byType(MenuAnchor)), const Offset(0.0, safeAreaPadding)); + }); }