diff --git a/packages/flutter/lib/src/rendering/flex.dart b/packages/flutter/lib/src/rendering/flex.dart index 585839c3c2..b26421a367 100644 --- a/packages/flutter/lib/src/rendering/flex.dart +++ b/packages/flutter/lib/src/rendering/flex.dart @@ -483,10 +483,10 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin _overflow! > precisionErrorTolerance; + bool get _hasOverflow => _overflow > precisionErrorTolerance; /// {@macro flutter.material.Material.clipBehavior} /// @@ -1125,10 +1125,10 @@ class RenderFlex extends RenderBox with ContainerRenderObjectMixin flex.getMaxIntrinsicWidth(100), cannotCalculateIntrinsics); expect(() => flex.getMinIntrinsicWidth(100), cannotCalculateIntrinsics); }); + + test('Can call methods that check overflow even if overflow value is not set', () { + final List exceptions = []; + final RenderFlex flex = RenderFlex(children: const []); + // This forces a check for _hasOverflow + expect(flex.toStringShort(), isNot(contains('OVERFLOWING'))); + layout(flex, phase: EnginePhase.paint, onErrors: () { + exceptions.addAll(renderer.takeAllFlutterExceptions()); + }); + // We expect the RenderFlex to throw during performLayout() for not having + // a text direction, thus leaving it with a null overflow value. It'll then + // try to paint(), which also checks _hasOverflow, and it should be able to + // do so without an ancillary error. + expect(exceptions, hasLength(1)); + expect(exceptions.first.message, isNot(contains('Null check operator'))); + }); }