Unverified Commit c58e31a7 authored by Kate Lovett's avatar Kate Lovett Committed by GitHub

Cupertino TextField Cursor Fix (#27697)

* Fix for #26261. Changes CupertinoTextField's cursorColor to read from CupertinoTheme instead of prior default of activeBlue. CursorColor will still default to activeBlue for light theme and activeOrange for dark theme if a primary color has not been specified for the CupertinoTheme.

* Reverted unnecessary changes in XCode file.

* Updated text_field.dart per suggestions from @gspencergoog

* Updated comments for cursorColor to reflect appropriate hyperlinks per @Hixie

* Simplified cursorColor assignment per @xster

* Added test in cupertino/text_field_test.dart to check for correct cursorColor based on CupertinoTheme per @Hixie & @xster.
parent c633e028
......@@ -172,7 +172,7 @@ class CupertinoTextField extends StatefulWidget {
this.enabled,
this.cursorWidth = 2.0,
this.cursorRadius = const Radius.circular(2.0),
this.cursorColor = CupertinoColors.activeBlue,
this.cursorColor,
this.keyboardAppearance,
this.scrollPadding = const EdgeInsets.all(20.0),
}) : assert(textAlign != null),
......@@ -365,7 +365,9 @@ class CupertinoTextField extends StatefulWidget {
/// The color to use when painting the cursor.
///
/// Defaults to the standard iOS blue color. Cannot be null.
/// Defaults to the [CupertinoThemeData.primaryColor] of the ambient theme,
/// which itself defaults to [CupertinoColors.activeBlue] in the light theme
/// and [CupertinoColors.activeOrange] in the dark theme.
final Color cursorColor;
/// The appearance of the keyboard.
......@@ -401,6 +403,7 @@ class CupertinoTextField extends StatefulWidget {
properties.add(IntProperty('maxLines', maxLines, defaultValue: 1));
properties.add(IntProperty('maxLength', maxLength, defaultValue: null));
properties.add(FlagProperty('maxLengthEnforced', value: maxLengthEnforced, ifTrue: 'max length enforced'));
properties.add(DiagnosticsProperty<Color>('cursorColor', cursorColor, defaultValue: null));
}
}
......@@ -644,7 +647,7 @@ class _CupertinoTextFieldState extends State<CupertinoTextField> with AutomaticK
rendererIgnoresPointer: true,
cursorWidth: widget.cursorWidth,
cursorRadius: widget.cursorRadius,
cursorColor: widget.cursorColor,
cursorColor: themeData.primaryColor,
cursorOpacityAnimates: true,
cursorOffset: cursorOffset,
paintCursorAboveText: true,
......
......@@ -1345,4 +1345,46 @@ void main() {
expect(setClient.method, 'TextInput.setClient');
expect(setClient.arguments.last['keyboardAppearance'], 'Brightness.light');
});
testWidgets('cursorColor respects theme', (WidgetTester tester) async {
await tester.pumpWidget(
const CupertinoApp(
home: CupertinoTextField(),
),
);
final Finder textFinder = find.byType(CupertinoTextField);
await tester.tap(textFinder);
await tester.pump();
final EditableTextState editableTextState =
tester.firstState(find.byType(EditableText));
final RenderEditable renderEditable = editableTextState.renderEditable;
expect(renderEditable.cursorColor, CupertinoColors.activeBlue);
await tester.pumpWidget(
const CupertinoApp(
home: CupertinoTextField(),
theme: CupertinoThemeData(
brightness: Brightness.dark,
),
),
);
await tester.pump();
expect(renderEditable.cursorColor, CupertinoColors.activeOrange);
await tester.pumpWidget(
const CupertinoApp(
home: CupertinoTextField(),
theme: CupertinoThemeData(
primaryColor: Color(0xFFF44336),
),
),
);
await tester.pump();
expect(renderEditable.cursorColor, const Color(0xFFF44336));
});
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment