diff --git a/packages/flutter/lib/src/widgets/widget_inspector.dart b/packages/flutter/lib/src/widgets/widget_inspector.dart index f525b4fcdd5..91515815a38 100644 --- a/packages/flutter/lib/src/widgets/widget_inspector.dart +++ b/packages/flutter/lib/src/widgets/widget_inspector.dart @@ -2346,7 +2346,7 @@ mixin WidgetInspectorService { final ParentData? parentData = renderObject.parentData; if (parentData is FlexParentData) { - additionalJson['flexFactor'] = parentData.flex!; + additionalJson['flexFactor'] = parentData.flex ?? 0; additionalJson['flexFit'] = (parentData.fit ?? FlexFit.tight).name; } else if (parentData is BoxParentData) { final Offset offset = parentData.offset; diff --git a/packages/flutter/test/widgets/widget_inspector_test.dart b/packages/flutter/test/widgets/widget_inspector_test.dart index 322417530a1..41588d1e5f5 100644 --- a/packages/flutter/test/widgets/widget_inspector_test.dart +++ b/packages/flutter/test/widgets/widget_inspector_test.dart @@ -5137,6 +5137,44 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { }, ); + testWidgets('getLayoutExplorerNode omits flexFactor when flex is null', ( + WidgetTester tester, + ) async { + await tester.pumpWidget( + const Directionality( + textDirection: TextDirection.ltr, + child: Row( + children: [ + Align( + alignment: Alignment.topLeft, + child: ColoredBox( + color: Color(0xFF000000), + child: SizedBox(width: 14, height: 14), + ), + ), + ], + ), + ), + ); + + final Element boxElement = tester.element(find.byType(ColoredBox).first); + service.setSelection(boxElement, group); + + final String id = service.toId(boxElement, group)!; + final Map result = + (await service.testExtension( + WidgetInspectorServiceExtensions.getLayoutExplorerNode.name, + {'id': id, 'groupName': group, 'subtreeDepth': '1'}, + ))! + as Map; + + final Map? parentData = result['parentData'] as Map?; + expect(parentData, isNotNull); + expect(parentData!['flexFactor'], isNull); + expect(parentData['flexFit'], isNull); + expect(tester.takeException(), isNull); + }); + testWidgets('ext.flutter.inspector.getLayoutExplorerNode for RenderBox with FlexParentData', ( WidgetTester tester, ) async { @@ -5180,8 +5218,6 @@ class _TestWidgetInspectorService extends TestWidgetInspectorService { expect(result['flexFactor'], equals(1)); expect(result['flexFit'], equals('loose')); - - expect(result['parentData'], isNull); }); testWidgets('ext.flutter.inspector.getLayoutExplorerNode for RenderView', (