Update CupertinoTextField (#29008)

diff --git a/packages/flutter/lib/src/cupertino/text_field.dart b/packages/flutter/lib/src/cupertino/text_field.dart
index 2ab7e75..7bce145 100644
--- a/packages/flutter/lib/src/cupertino/text_field.dart
+++ b/packages/flutter/lib/src/cupertino/text_field.dart
@@ -672,6 +672,7 @@
     final CupertinoThemeData themeData = CupertinoTheme.of(context);
     final TextStyle textStyle = themeData.textTheme.textStyle.merge(widget.style);
     final Brightness keyboardAppearance = widget.keyboardAppearance ?? themeData.brightness;
+    final Color cursorColor = widget.cursorColor ?? themeData.primaryColor;
 
     final Widget paddedEditable = Padding(
       padding: widget.padding,
@@ -702,7 +703,7 @@
           rendererIgnoresPointer: true,
           cursorWidth: widget.cursorWidth,
           cursorRadius: widget.cursorRadius,
-          cursorColor: themeData.primaryColor,
+          cursorColor: cursorColor,
           cursorOpacityAnimates: true,
           cursorOffset: cursorOffset,
           paintCursorAboveText: true,
diff --git a/packages/flutter/test/cupertino/text_field_test.dart b/packages/flutter/test/cupertino/text_field_test.dart
index b059ab0..883c06c 100644
--- a/packages/flutter/test/cupertino/text_field_test.dart
+++ b/packages/flutter/test/cupertino/text_field_test.dart
@@ -1918,4 +1918,20 @@
     await tester.pump();
     expect(renderEditable.cursorColor, const Color(0xFFF44336));
   });
+
+  testWidgets('cursor can override color from theme', (WidgetTester tester) async {
+    await tester.pumpWidget(
+      const CupertinoApp(
+        theme: CupertinoThemeData(),
+        home: Center(
+          child: CupertinoTextField(
+            cursorColor: Color(0xFFF44336),
+          ),
+        ),
+      ),
+    );
+
+    final EditableText editableText = tester.firstWidget(find.byType(EditableText));
+    expect(editableText.cursorColor, const Color(0xFFF44336));
+  });
 }