Make sure that CupertinoNavigationBar doesn't crash in 0x0 environment#179235
Conversation
There was a problem hiding this comment.
Code Review
This pull request adds a regression test to ensure CupertinoNavigationBar does not crash when placed in a zero-sized environment. The test is a good addition to prevent future regressions. However, the original issue seems to be related to _RenderLargeTitle, which is used by CupertinoNavigationBar.large. The added test only covers the standard CupertinoNavigationBar. I recommend adding another test case for CupertinoNavigationBar.large to fully cover the reported issue.
| testWidgets('CupertinoNavigationBar does not crash at zero area', (WidgetTester tester) async { | ||
| await tester.pumpWidget( | ||
| const CupertinoApp( | ||
| home: Center(child: SizedBox.shrink(child: CupertinoNavigationBar())), | ||
| ), | ||
| ); | ||
| expect(tester.getSize(find.byType(CupertinoNavigationBar)), Size.zero); | ||
| }); |
There was a problem hiding this comment.
This test covers the standard CupertinoNavigationBar, which is great. However, the issue you're referencing (#6537) specifically mentions a crash within _RenderLargeTitle, which is used by CupertinoNavigationBar.large. To ensure the fix is fully covered and prevent regressions, it would be beneficial to add a similar test case for CupertinoNavigationBar.large.
Here's a suggestion for the additional test:
testWidgets('CupertinoNavigationBar does not crash at zero area', (WidgetTester tester) async {
await tester.pumpWidget(
const CupertinoApp(
home: Center(child: SizedBox.shrink(child: CupertinoNavigationBar())),
),
);
expect(tester.getSize(find.byType(CupertinoNavigationBar)), Size.zero);
});
testWidgets('CupertinoNavigationBar.large does not crash at zero area', (WidgetTester tester) async {
await tester.pumpWidget(
const CupertinoApp(
home: Center(child: SizedBox.shrink(child: CupertinoNavigationBar.large(largeTitle: Text('Title')))),
),
);
expect(tester.getSize(find.byType(CupertinoNavigationBar)), Size.zero);
});There was a problem hiding this comment.
Maybe try passing the navigation bar into a CupertinoPageScaffold.navigationBar?
There was a problem hiding this comment.
tester.view.physicalSize = Size.zero;
addTearDown(tester.view.reset);
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoPageScaffold(navigationBar: CupertinoNavigationBar(), child: SizedBox()),
),
),
);fails with: Expected: Size:<Size(0.0, 0.0)>
Actual: _DebugSize:<Size(0.0, 44.0)>
There was a problem hiding this comment.
I see, I think we can leave it out. Internally we give the navigation bar a fixed height to make it play nicely with the scaffold.
dkwingsmt
left a comment
There was a problem hiding this comment.
Checklist:
- The test is in the correct file
- The test name goes “does not crash at zero area”
- The target widget is wrapped by
Center(or is fullscreen) - The target widget does not have an overlay, or the overlay is tested
- The target widget is expected to have a size of exactly
Size.zero
Roll Flutter from 5b87203 to b2de367 (38 revisions) flutter/flutter@5b87203...b2de367 2025-12-08 [email protected] Roll Packages from b17d3ff to 33a9a81 (3 revisions) (flutter/flutter#179579) 2025-12-08 [email protected] Roll Fuchsia Linux SDK from XCoAHsnYnKrvuWU2o... to _pSztGZvEA3-Ry-GW... (flutter/flutter#179575) 2025-12-08 [email protected] Implementation of `TestWindowingOwner` for testing multi-window (flutter/flutter#179355) 2025-12-08 [email protected] Roll Dart SDK from 11efe37089a7 to 75899721aa42 (2 revisions) (flutter/flutter#179573) 2025-12-08 [email protected] Roll Skia from 0c016e4aefd5 to b1936c760645 (8 revisions) (flutter/flutter#179568) 2025-12-08 [email protected] Roll Skia from 3c5f9e0c9269 to 0c016e4aefd5 (1 revision) (flutter/flutter#179565) 2025-12-08 [email protected] Roll Dart SDK from 1a6c6f6398af to 11efe37089a7 (1 revision) (flutter/flutter#179564) 2025-12-07 [email protected] Roll Skia from 4830855b6f84 to 3c5f9e0c9269 (1 revision) (flutter/flutter#179561) 2025-12-07 [email protected] Roll Skia from d5a6b6af6d12 to 4830855b6f84 (1 revision) (flutter/flutter#179557) 2025-12-07 [email protected] Roll Fuchsia Linux SDK from KilaJW3p3J_0yUDtV... to XCoAHsnYnKrvuWU2o... (flutter/flutter#179551) 2025-12-06 [email protected] Roll Skia from 33b32cecb287 to d5a6b6af6d12 (1 revision) (flutter/flutter#179540) 2025-12-06 [email protected] Roll Dart SDK from ea201dd2ef12 to 1a6c6f6398af (1 revision) (flutter/flutter#179539) 2025-12-06 [email protected] Roll Dart SDK from d1d30ee8d5a0 to ea201dd2ef12 (1 revision) (flutter/flutter#179537) 2025-12-06 [email protected] Roll Dart SDK from 30c906aa00f2 to d1d30ee8d5a0 (1 revision) (flutter/flutter#179534) 2025-12-06 [email protected] Roll Skia from dccd48c6c6ab to 33b32cecb287 (2 revisions) (flutter/flutter#179531) 2025-12-06 [email protected] Roll Fuchsia Linux SDK from vDeTl_KBeLJY8nCAx... to KilaJW3p3J_0yUDtV... (flutter/flutter#179530) 2025-12-06 [email protected] Roll Dart SDK from f3690c23d422 to 30c906aa00f2 (2 revisions) (flutter/flutter#179529) 2025-12-06 [email protected] Roll Skia from e19670f70406 to dccd48c6c6ab (6 revisions) (flutter/flutter#179524) 2025-12-05 [email protected] Make sure that a CupertinoFormRow doesn't crash in 0x0 environment (flutter/flutter#178979) 2025-12-05 [email protected] Make sure that a CupertinoContextMenuAction doesn't crash in 0x0 envi… (flutter/flutter#178721) 2025-12-05 [email protected] Make sure that a CupertinoRadio doesn't crash in 0x0 environment (flutter/flutter#179378) 2025-12-05 [email protected] Make sure that a CupertinoSearchTextField doesn't crash in 0x0 enviro… (flutter/flutter#179487) 2025-12-05 [email protected] Make sure that a CupertinoPicker doesn't crash in 0x0 environment (flutter/flutter#179258) 2025-12-05 [email protected] Make sure that a CupertinoAlertDialog doesn't crash in 0x0 environment (flutter/flutter#178858) 2025-12-05 [email protected] Make sure that a CupertinoListTileChevron doesn't crash in 0x0 enviro… (flutter/flutter#179165) 2025-12-05 [email protected] Make sure that CupertinoNavigationBar doesn't crash in 0x0 environment (flutter/flutter#179235) 2025-12-05 [email protected] Replace dropdown button with dropdown menu (flutter/flutter#179095) 2025-12-05 [email protected] Make sure that a CupertinoCheckbox doesn't crash in 0x0 environment (flutter/flutter#178630) 2025-12-05 [email protected] Make sure that a CupertinoApp doesn't crash in 0x0 environment (flutter/flutter#178610) 2025-12-05 [email protected] Make sure that a CupertinoButton doesn't crash in 0x0 environment (flutter/flutter#178629) 2025-12-05 [email protected] Make sure that a CupertinoTimerPicker doesn't crash in 0x0 environment (flutter/flutter#178857) 2025-12-05 [email protected] Make sure that a CupertinoScrollbar doesn't crash in 0x0 environment (flutter/flutter#179442) 2025-12-05 [email protected] Roll Dart SDK from 0fcab487446d to f3690c23d422 (1 revision) (flutter/flutter#179517) 2025-12-05 [email protected] Update several comments related to theme normalization (flutter/flutter#179457) 2025-12-05 [email protected] Reimplemented StretchingOverscrollIndicator with Simulation ported from Android 12. (flutter/flutter#173849) 2025-12-05 [email protected] Roll Skia from a31411879251 to e19670f70406 (1 revision) (flutter/flutter#179511) 2025-12-05 [email protected] chore: mark tests as flaky (flutter/flutter#179518) 2025-12-05 [email protected] Roll Dart SDK from 42fe3327abca to 0fcab487446d (3 revisions) (flutter/flutter#179506) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
flutter#179235) This is my attempt to handle flutter#6537 for the CupertinoNavigationBar widget. Co-authored-by: Tong Mu <[email protected]>
Roll Flutter from 5b87203 to b2de367 (38 revisions) flutter/flutter@5b87203...b2de367 2025-12-08 [email protected] Roll Packages from b17d3ff to 33a9a81 (3 revisions) (flutter/flutter#179579) 2025-12-08 [email protected] Roll Fuchsia Linux SDK from XCoAHsnYnKrvuWU2o... to _pSztGZvEA3-Ry-GW... (flutter/flutter#179575) 2025-12-08 [email protected] Implementation of `TestWindowingOwner` for testing multi-window (flutter/flutter#179355) 2025-12-08 [email protected] Roll Dart SDK from 11efe37089a7 to 75899721aa42 (2 revisions) (flutter/flutter#179573) 2025-12-08 [email protected] Roll Skia from 0c016e4aefd5 to b1936c760645 (8 revisions) (flutter/flutter#179568) 2025-12-08 [email protected] Roll Skia from 3c5f9e0c9269 to 0c016e4aefd5 (1 revision) (flutter/flutter#179565) 2025-12-08 [email protected] Roll Dart SDK from 1a6c6f6398af to 11efe37089a7 (1 revision) (flutter/flutter#179564) 2025-12-07 [email protected] Roll Skia from 4830855b6f84 to 3c5f9e0c9269 (1 revision) (flutter/flutter#179561) 2025-12-07 [email protected] Roll Skia from d5a6b6af6d12 to 4830855b6f84 (1 revision) (flutter/flutter#179557) 2025-12-07 [email protected] Roll Fuchsia Linux SDK from KilaJW3p3J_0yUDtV... to XCoAHsnYnKrvuWU2o... (flutter/flutter#179551) 2025-12-06 [email protected] Roll Skia from 33b32cecb287 to d5a6b6af6d12 (1 revision) (flutter/flutter#179540) 2025-12-06 [email protected] Roll Dart SDK from ea201dd2ef12 to 1a6c6f6398af (1 revision) (flutter/flutter#179539) 2025-12-06 [email protected] Roll Dart SDK from d1d30ee8d5a0 to ea201dd2ef12 (1 revision) (flutter/flutter#179537) 2025-12-06 [email protected] Roll Dart SDK from 30c906aa00f2 to d1d30ee8d5a0 (1 revision) (flutter/flutter#179534) 2025-12-06 [email protected] Roll Skia from dccd48c6c6ab to 33b32cecb287 (2 revisions) (flutter/flutter#179531) 2025-12-06 [email protected] Roll Fuchsia Linux SDK from vDeTl_KBeLJY8nCAx... to KilaJW3p3J_0yUDtV... (flutter/flutter#179530) 2025-12-06 [email protected] Roll Dart SDK from f3690c23d422 to 30c906aa00f2 (2 revisions) (flutter/flutter#179529) 2025-12-06 [email protected] Roll Skia from e19670f70406 to dccd48c6c6ab (6 revisions) (flutter/flutter#179524) 2025-12-05 [email protected] Make sure that a CupertinoFormRow doesn't crash in 0x0 environment (flutter/flutter#178979) 2025-12-05 [email protected] Make sure that a CupertinoContextMenuAction doesn't crash in 0x0 envi… (flutter/flutter#178721) 2025-12-05 [email protected] Make sure that a CupertinoRadio doesn't crash in 0x0 environment (flutter/flutter#179378) 2025-12-05 [email protected] Make sure that a CupertinoSearchTextField doesn't crash in 0x0 enviro… (flutter/flutter#179487) 2025-12-05 [email protected] Make sure that a CupertinoPicker doesn't crash in 0x0 environment (flutter/flutter#179258) 2025-12-05 [email protected] Make sure that a CupertinoAlertDialog doesn't crash in 0x0 environment (flutter/flutter#178858) 2025-12-05 [email protected] Make sure that a CupertinoListTileChevron doesn't crash in 0x0 enviro… (flutter/flutter#179165) 2025-12-05 [email protected] Make sure that CupertinoNavigationBar doesn't crash in 0x0 environment (flutter/flutter#179235) 2025-12-05 [email protected] Replace dropdown button with dropdown menu (flutter/flutter#179095) 2025-12-05 [email protected] Make sure that a CupertinoCheckbox doesn't crash in 0x0 environment (flutter/flutter#178630) 2025-12-05 [email protected] Make sure that a CupertinoApp doesn't crash in 0x0 environment (flutter/flutter#178610) 2025-12-05 [email protected] Make sure that a CupertinoButton doesn't crash in 0x0 environment (flutter/flutter#178629) 2025-12-05 [email protected] Make sure that a CupertinoTimerPicker doesn't crash in 0x0 environment (flutter/flutter#178857) 2025-12-05 [email protected] Make sure that a CupertinoScrollbar doesn't crash in 0x0 environment (flutter/flutter#179442) 2025-12-05 [email protected] Roll Dart SDK from 0fcab487446d to f3690c23d422 (1 revision) (flutter/flutter#179517) 2025-12-05 [email protected] Update several comments related to theme normalization (flutter/flutter#179457) 2025-12-05 [email protected] Reimplemented StretchingOverscrollIndicator with Simulation ported from Android 12. (flutter/flutter#173849) 2025-12-05 [email protected] Roll Skia from a31411879251 to e19670f70406 (1 revision) (flutter/flutter#179511) 2025-12-05 [email protected] chore: mark tests as flaky (flutter/flutter#179518) 2025-12-05 [email protected] Roll Dart SDK from 42fe3327abca to 0fcab487446d (3 revisions) (flutter/flutter#179506) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose ...
This is my attempt to handle #6537 for the CupertinoNavigationBar widget.