@@ -909,6 +909,91 @@ void main() {
909909 },
910910 );
911911
912+ testWidgets (
913+ 'The second CupertinoTextField is clicked, triggers the onTapOutside callback of the previous CupertinoTextField' ,
914+ (WidgetTester tester) async {
915+ final GlobalKey keyA = GlobalKey ();
916+ final GlobalKey keyB = GlobalKey ();
917+ final GlobalKey keyC = GlobalKey ();
918+ bool outsideClickA = false ;
919+ bool outsideClickB = false ;
920+ bool outsideClickC = false ;
921+ await tester.pumpWidget (
922+ MaterialApp (
923+ home: Align (
924+ alignment: Alignment .topLeft,
925+ child: Column (
926+ children: < Widget > [
927+ const Text ('Outside' ),
928+ Material (
929+ child: CupertinoTextField (
930+ key: keyA,
931+ groupId: 'Group A' ,
932+ onTapOutside: (PointerDownEvent event) {
933+ outsideClickA = true ;
934+ },
935+ ),
936+ ),
937+ Material (
938+ child: CupertinoTextField (
939+ key: keyB,
940+ groupId: 'Group B' ,
941+ onTapOutside: (PointerDownEvent event) {
942+ outsideClickB = true ;
943+ },
944+ ),
945+ ),
946+ Material (
947+ child: CupertinoTextField (
948+ key: keyC,
949+ groupId: 'Group C' ,
950+ onTapOutside: (PointerDownEvent event) {
951+ outsideClickC = true ;
952+ },
953+ ),
954+ ),
955+ ],
956+ ),
957+ ),
958+ ),
959+ );
960+
961+ await tester.pump ();
962+
963+ Future <void > click (Finder finder) async {
964+ await tester.tap (finder);
965+ await tester.enterText (finder, 'Hello' );
966+ await tester.pump ();
967+ }
968+
969+ expect (outsideClickA, false );
970+ expect (outsideClickB, false );
971+ expect (outsideClickC, false );
972+
973+ await click (find.byKey (keyA));
974+ await tester.showKeyboard (find.byKey (keyA));
975+ await tester.idle ();
976+ expect (outsideClickA, false );
977+ expect (outsideClickB, false );
978+ expect (outsideClickC, false );
979+
980+ await click (find.byKey (keyB));
981+ expect (outsideClickA, true );
982+ expect (outsideClickB, false );
983+ expect (outsideClickC, false );
984+
985+ await click (find.byKey (keyC));
986+ expect (outsideClickA, true );
987+ expect (outsideClickB, true );
988+ expect (outsideClickC, false );
989+
990+ await tester.tap (find.text ('Outside' ));
991+ expect (outsideClickA, true );
992+ expect (outsideClickB, true );
993+ expect (outsideClickC, true );
994+ },
995+ );
996+
912997 testWidgets (
913998 'decoration can be overridden' ,
914999 (WidgetTester tester) async {
0 commit comments