Skip to content

Commit 918b2b9

Browse files
authored
Added spellCheckConfiguration to the constructor of CupertinoTextFormFieldRow (flutter#159385)
Before: No way to set the _spellCheckConfiguration_ property of a CupertinoTextFormFieldRow, meaning no spellcheck/highlighting of incorrect words is present. This can be done on the standard CupertinoTextField widget, but not the CupertinoTextFormFieldRow widget. ![image](https://github.com/user-attachments/assets/891721c4-020b-4a3f-9492-e2ba7a475bd5) After: Adding this property allows the _spellCheckConfiguration_ to be configured and spellcheck/highlighting of incorrect words working as expected. ![image](https://github.com/user-attachments/assets/7b20692d-9444-4ce6-9b43-54bda7de2552) ![image](https://github.com/user-attachments/assets/3e86c901-4954-4ac2-9f63-bcdddfa3b43c) Fixes flutter#159382 by adding the _ spellCheckConfiguration_ field to the constructor of CupertinoTextFormFieldRow and passing the value through to CupertinoTextField.borderless internally. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
1 parent 25ab2e0 commit 918b2b9

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

packages/flutter/lib/src/cupertino/text_form_field_row.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,7 @@ class CupertinoTextFormFieldRow extends FormField<String> {
157157
color: CupertinoColors.placeholderText,
158158
),
159159
EditableTextContextMenuBuilder? contextMenuBuilder = _defaultContextMenuBuilder,
160+
SpellCheckConfiguration? spellCheckConfiguration,
160161
super.restorationId,
161162
}) : assert(initialValue == null || controller == null),
162163
assert(obscuringCharacter.length == 1),
@@ -234,6 +235,7 @@ class CupertinoTextFormFieldRow extends FormField<String> {
234235
placeholder: placeholder,
235236
placeholderStyle: placeholderStyle,
236237
contextMenuBuilder: contextMenuBuilder,
238+
spellCheckConfiguration: spellCheckConfiguration
237239
),
238240
),
239241
);

packages/flutter/test/cupertino/text_form_field_row_test.dart

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import 'package:flutter/cupertino.dart';
66
import 'package:flutter/rendering.dart';
7+
import 'package:flutter/src/services/spell_check.dart';
78
import 'package:flutter_test/flutter_test.dart';
89

910
void main() {
@@ -27,6 +28,29 @@ void main() {
2728
expect(textFieldWidget.textAlign, alignment);
2829
});
2930

31+
testWidgets('Passes spellCheckConfiguration to underlying CupertinoTextField', (WidgetTester tester) async {
32+
final SpellCheckConfiguration spellCheckConfig = SpellCheckConfiguration(
33+
spellCheckService: DefaultSpellCheckService(),
34+
misspelledSelectionColor: const Color.fromARGB(255, 255, 255, 0)
35+
);
36+
37+
await tester.pumpWidget(
38+
CupertinoApp(
39+
home: Center(
40+
child: CupertinoTextFormFieldRow(
41+
spellCheckConfiguration: spellCheckConfig,
42+
),
43+
),
44+
),
45+
);
46+
47+
final Finder textFieldFinder = find.byType(CupertinoTextField);
48+
expect(textFieldFinder, findsOneWidget);
49+
50+
final CupertinoTextField textFieldWidget = tester.widget(textFieldFinder);
51+
expect(textFieldWidget.spellCheckConfiguration, spellCheckConfig);
52+
});
53+
3054
testWidgets('Passes scrollPhysics to underlying TextField', (WidgetTester tester) async {
3155
const ScrollPhysics scrollPhysics = ScrollPhysics();
3256

0 commit comments

Comments
 (0)