diff --git a/packages/flutter/lib/src/cupertino/dialog.dart b/packages/flutter/lib/src/cupertino/dialog.dart index f2f6db5c650..1f0335b0567 100644 --- a/packages/flutter/lib/src/cupertino/dialog.dart +++ b/packages/flutter/lib/src/cupertino/dialog.dart @@ -679,6 +679,8 @@ class CupertinoPopupSurface extends StatelessWidget { /// Defaults to true. static bool debugIsVibrancePainted = true; + // TODO(davidhicks980): Set `bounded` to true on ImageFilterConfig.blur after + // https://github.com/flutter/flutter/issues/182066 is resolved. ImageFilterConfig? _buildFilter(Brightness? brightness) { var isVibrancePainted = true; assert(() { @@ -689,7 +691,7 @@ class CupertinoPopupSurface extends StatelessWidget { if (blurSigma == 0) { return null; } - return ImageFilterConfig.blur(sigmaX: blurSigma, sigmaY: blurSigma, bounded: true); + return ImageFilterConfig.blur(sigmaX: blurSigma, sigmaY: blurSigma); } final colorFilter = ImageFilterConfig(switch (brightness) { @@ -703,7 +705,7 @@ class CupertinoPopupSurface extends StatelessWidget { return ImageFilterConfig.compose( inner: colorFilter, - outer: ImageFilterConfig.blur(sigmaX: blurSigma, sigmaY: blurSigma, bounded: true), + outer: ImageFilterConfig.blur(sigmaX: blurSigma, sigmaY: blurSigma), ); } diff --git a/packages/flutter/test/cupertino/popup_surface_test.dart b/packages/flutter/test/cupertino/popup_surface_test.dart index 4f873127672..d31514b006a 100644 --- a/packages/flutter/test/cupertino/popup_surface_test.dart +++ b/packages/flutter/test/cupertino/popup_surface_test.dart @@ -9,6 +9,7 @@ library; import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/rendering.dart'; import 'package:flutter_test/flutter_test.dart'; class _FilterTest extends StatelessWidget { @@ -338,4 +339,27 @@ void main() { matchesGoldenFile('cupertinoPopupSurface.composition.png'), ); }); + + // Regression test for https://github.com/flutter/flutter/issues/182066. + testWidgets('CupertinoPopupSurface uses unbounded blur', (WidgetTester tester) async { + void expectContainsUnboundedBlur() { + var foundBlur = false; + for (final Layer layer in tester.layers) { + if (layer is BackdropFilterLayer) { + if (layer.toString().contains('blur')) { + expect(layer.toString(), isNot(contains('bounds: '))); + foundBlur = true; + } + } + } + expect(foundBlur, isTrue); + } + + await tester.pumpWidget( + const CupertinoApp( + home: Center(child: CupertinoPopupSurface(child: Text('X'))), + ), + ); + expectContainsUnboundedBlur(); + }); }