diff --git a/packages/flutter/lib/src/cupertino/text_field.dart b/packages/flutter/lib/src/cupertino/text_field.dart index 2ab7e752d3..7bce145ab5 100644 --- a/packages/flutter/lib/src/cupertino/text_field.dart +++ b/packages/flutter/lib/src/cupertino/text_field.dart @@ -672,6 +672,7 @@ class _CupertinoTextFieldState extends State with AutomaticK 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 @@ class _CupertinoTextFieldState extends State with AutomaticK 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 b059ab0f2b..883c06c0fa 100644 --- a/packages/flutter/test/cupertino/text_field_test.dart +++ b/packages/flutter/test/cupertino/text_field_test.dart @@ -1918,4 +1918,20 @@ void main() { 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)); + }); }