From f66c85e8a2ec5895a0f2846a0bed3580fa8b2425 Mon Sep 17 00:00:00 2001 From: masal9pse Date: Thu, 10 Apr 2025 23:55:52 +0900 Subject: [PATCH 1/4] Add barrierColor property to showCupertinoDialog(#166910) --- packages/flutter/lib/src/cupertino/route.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/flutter/lib/src/cupertino/route.dart b/packages/flutter/lib/src/cupertino/route.dart index fdfe92b074200..436acb25bf0bf 100644 --- a/packages/flutter/lib/src/cupertino/route.dart +++ b/packages/flutter/lib/src/cupertino/route.dart @@ -1410,6 +1410,7 @@ Future showCupertinoDialog({ required BuildContext context, required WidgetBuilder builder, String? barrierLabel, + Color? barrierColor, bool useRootNavigator = true, bool barrierDismissible = false, RouteSettings? routeSettings, @@ -1422,7 +1423,7 @@ Future showCupertinoDialog({ context: context, barrierDismissible: barrierDismissible, barrierLabel: barrierLabel, - barrierColor: CupertinoDynamicColor.resolve(kCupertinoModalBarrierColor, context), + barrierColor: barrierColor, settings: routeSettings, anchorPoint: anchorPoint, requestFocus: requestFocus, From 1c456cb7d968e76011e766fa38f6152c1d3e36cc Mon Sep 17 00:00:00 2001 From: masal9pse Date: Thu, 24 Apr 2025 23:55:56 +0900 Subject: [PATCH 2/4] test: verify custom barrierColor is applied in showCupertinoDialog --- .../flutter/test/cupertino/dialog_test.dart | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/packages/flutter/test/cupertino/dialog_test.dart b/packages/flutter/test/cupertino/dialog_test.dart index d3971ca8b13f8..d4543e4b0a77f 100644 --- a/packages/flutter/test/cupertino/dialog_test.dart +++ b/packages/flutter/test/cupertino/dialog_test.dart @@ -1737,6 +1737,52 @@ void main() { semantics.dispose(); }); + testWidgets('showCupertinoDialog - custom barrierColor', (WidgetTester tester) async { + await tester.pumpWidget( + CupertinoApp( + home: Builder( + builder: (BuildContext context) { + return Center( + child: Column( + children: [ + CupertinoButton( + child: const Text('Custom BarrierColor'), + onPressed: () { + showCupertinoDialog( + context: context, + barrierColor: Colors.red, + builder: (BuildContext context) { + return CupertinoAlertDialog( + title: const Text('Title'), + content: const Text('Content'), + actions: [ + const CupertinoDialogAction(child: Text('Yes')), + CupertinoDialogAction( + child: const Text('No'), + onPressed: () { + Navigator.pop(context); + }, + ), + ], + ); + }, + ); + }, + ), + ], + ), + ); + }, + ), + ), + ); + + await tester.tap(find.text('Custom BarrierColor')); + await tester.pumpAndSettle(); + + expect(tester.widget(find.byType(ModalBarrier).last).color, equals(Colors.red)); + }); + testWidgets('CupertinoDialogRoute is state restorable', (WidgetTester tester) async { await tester.pumpWidget( const CupertinoApp(restorationScopeId: 'app', home: _RestorableDialogTestWidget()), From 74e4742515620cac53b46cffa3351aa0971e7ee9 Mon Sep 17 00:00:00 2001 From: masal9pse Date: Fri, 25 Apr 2025 00:10:20 +0900 Subject: [PATCH 3/4] test: verify barrierColor is removed after tapping "No" in CupertinoDialog --- packages/flutter/test/cupertino/dialog_test.dart | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/flutter/test/cupertino/dialog_test.dart b/packages/flutter/test/cupertino/dialog_test.dart index d4543e4b0a77f..231cfc76ababd 100644 --- a/packages/flutter/test/cupertino/dialog_test.dart +++ b/packages/flutter/test/cupertino/dialog_test.dart @@ -1779,8 +1779,14 @@ void main() { await tester.tap(find.text('Custom BarrierColor')); await tester.pumpAndSettle(); - expect(tester.widget(find.byType(ModalBarrier).last).color, equals(Colors.red)); + + await tester.tap(find.text('No')); + await tester.pumpAndSettle(); + expect( + find.byWidgetPredicate((Widget widget) => widget is ModalBarrier && widget.color == Colors.red), + findsNothing, + ); }); testWidgets('CupertinoDialogRoute is state restorable', (WidgetTester tester) async { From bc53419ea15d97a9468074e871b89dc7d32c1077 Mon Sep 17 00:00:00 2001 From: masal9pse Date: Fri, 25 Apr 2025 03:42:42 +0900 Subject: [PATCH 4/4] fix format error --- packages/flutter/test/cupertino/dialog_test.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/flutter/test/cupertino/dialog_test.dart b/packages/flutter/test/cupertino/dialog_test.dart index 231cfc76ababd..b578c5f1f1aa6 100644 --- a/packages/flutter/test/cupertino/dialog_test.dart +++ b/packages/flutter/test/cupertino/dialog_test.dart @@ -1784,7 +1784,9 @@ void main() { await tester.tap(find.text('No')); await tester.pumpAndSettle(); expect( - find.byWidgetPredicate((Widget widget) => widget is ModalBarrier && widget.color == Colors.red), + find.byWidgetPredicate( + (Widget widget) => widget is ModalBarrier && widget.color == Colors.red, + ), findsNothing, ); });