From e055ca0b910fda1458c38d25bc67d55258ebb808 Mon Sep 17 00:00:00 2001 From: Ahmed Mohamed Sameh Date: Thu, 9 Oct 2025 03:07:14 +0300 Subject: [PATCH] Make sure that a RadioMenuButton doesn't crash in 0x0 environment (#176516) This is my attempt to handle https://github.com/flutter/flutter/issues/6537 for the RadioMenuButton widget. Co-authored-by: Tong Mu --- .../test/material/menu_anchor_test.dart | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/packages/flutter/test/material/menu_anchor_test.dart b/packages/flutter/test/material/menu_anchor_test.dart index 2297977e666..de8b5b48e06 100644 --- a/packages/flutter/test/material/menu_anchor_test.dart +++ b/packages/flutter/test/material/menu_anchor_test.dart @@ -5097,6 +5097,41 @@ void main() { expect(tester.getRect(findMenuPanels()).width, 800.0 - reservedPadding.horizontal); }); + testWidgets('CheckboxMenuButton does not crash at zero area', (WidgetTester tester) async { + await tester.pumpWidget( + MaterialApp( + home: Center( + child: SizedBox.shrink( + child: CheckboxMenuButton( + value: true, + onChanged: (bool? value) {}, + child: const Text('X'), + ), + ), + ), + ), + ); + expect(tester.getSize(find.byType(CheckboxMenuButton)), Size.zero); + }); + + testWidgets('RadioMenuButton does not crash at zero area', (WidgetTester tester) async { + await tester.pumpWidget( + MaterialApp( + home: Center( + child: SizedBox.shrink( + child: RadioMenuButton( + value: true, + groupValue: true, + onChanged: (bool? value) {}, + child: null, + ), + ), + ), + ), + ); + expect(tester.getSize(find.byType(RadioMenuButton)), Size.zero); + }); + testWidgets('Layout updates when reserved padding changes', (WidgetTester tester) async { const EdgeInsetsGeometry reservedPadding = EdgeInsets.symmetric(horizontal: 13.0);