Fix menu_anchor_test.dart's state leak (#112718)
Merging on red to green the build.
diff --git a/packages/flutter/test/material/menu_anchor_test.dart b/packages/flutter/test/material/menu_anchor_test.dart
index c8249b0..2b16a89 100644
--- a/packages/flutter/test/material/menu_anchor_test.dart
+++ b/packages/flutter/test/material/menu_anchor_test.dart
@@ -16,6 +16,7 @@
final List<TestMenu> opened = <TestMenu>[];
final List<TestMenu> closed = <TestMenu>[];
final GlobalKey menuItemKey = GlobalKey();
+ late Size defaultSize;
void onPressed(TestMenu item) {
selected.add(item);
@@ -33,6 +34,11 @@
focusedMenu = primaryFocus?.debugLabel ?? primaryFocus?.toString();
}
+ setUpAll(() {
+ final MediaQueryData mediaQueryData = MediaQueryData.fromWindow(TestWidgetsFlutterBinding.instance.window);
+ defaultSize = mediaQueryData.size;
+ });
+
setUp(() {
focusedMenu = null;
selected.clear();
@@ -42,6 +48,13 @@
focusedMenu = null;
});
+ Future<void> changeSurfaceSize(WidgetTester tester, Size size) async {
+ await tester.binding.setSurfaceSize(size);
+ addTearDown(() async {
+ await tester.binding.setSurfaceSize(defaultSize);
+ });
+ }
+
void listenForFocusChanges() {
FocusManager.instance.addListener(handleFocusChange);
addTearDown(() => FocusManager.instance.removeListener(handleFocusChange));
@@ -1059,16 +1072,13 @@
opened.clear();
const Size smallSize = Size(200, 200);
- await tester.binding.setSurfaceSize(smallSize);
+ await changeSurfaceSize(tester, smallSize);
await tester.pumpWidget(build(smallSize));
await tester.pump();
expect(opened, isEmpty);
expect(closed, isNotEmpty);
-
- // Reset binding when done.
- await tester.binding.setSurfaceSize(mediaQueryData.size);
});
});
@@ -1408,7 +1418,7 @@
}
testWidgets('unconstrained menus show up in the right place in LTR', (WidgetTester tester) async {
- await tester.binding.setSurfaceSize(const Size(800, 600));
+ await changeSurfaceSize(tester, const Size(800, 600));
await tester.pumpWidget(
MaterialApp(
home: Material(
@@ -1446,7 +1456,7 @@
});
testWidgets('unconstrained menus show up in the right place in RTL', (WidgetTester tester) async {
- await tester.binding.setSurfaceSize(const Size(800, 600));
+ await changeSurfaceSize(tester, const Size(800, 600));
await tester.pumpWidget(
MaterialApp(
home: Directionality(
@@ -1487,7 +1497,7 @@
});
testWidgets('constrained menus show up in the right place in LTR', (WidgetTester tester) async {
- await tester.binding.setSurfaceSize(const Size(300, 300));
+ await changeSurfaceSize(tester, const Size(300, 300));
await tester.pumpWidget(
MaterialApp(
home: Builder(
@@ -1526,7 +1536,7 @@
});
testWidgets('constrained menus show up in the right place in RTL', (WidgetTester tester) async {
- await tester.binding.setSurfaceSize(const Size(300, 300));
+ await changeSurfaceSize(tester, const Size(300, 300));
await tester.pumpWidget(
MaterialApp(
home: Builder(