From 918b2b9ddb437298dc5ff9e963ef139737371c4a Mon Sep 17 00:00:00 2001 From: Jackson <8475310+sargntpi@users.noreply.github.com> Date: Thu, 12 Dec 2024 04:38:00 +0800 Subject: [PATCH] Added spellCheckConfiguration to the constructor of CupertinoTextFormFieldRow (#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 #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]. [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 --- .../src/cupertino/text_form_field_row.dart | 2 ++ .../cupertino/text_form_field_row_test.dart | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/packages/flutter/lib/src/cupertino/text_form_field_row.dart b/packages/flutter/lib/src/cupertino/text_form_field_row.dart index bde43c299d..80b1ccab0a 100644 --- a/packages/flutter/lib/src/cupertino/text_form_field_row.dart +++ b/packages/flutter/lib/src/cupertino/text_form_field_row.dart @@ -157,6 +157,7 @@ class CupertinoTextFormFieldRow extends FormField { color: CupertinoColors.placeholderText, ), EditableTextContextMenuBuilder? contextMenuBuilder = _defaultContextMenuBuilder, + SpellCheckConfiguration? spellCheckConfiguration, super.restorationId, }) : assert(initialValue == null || controller == null), assert(obscuringCharacter.length == 1), @@ -234,6 +235,7 @@ class CupertinoTextFormFieldRow extends FormField { placeholder: placeholder, placeholderStyle: placeholderStyle, contextMenuBuilder: contextMenuBuilder, + spellCheckConfiguration: spellCheckConfiguration ), ), ); diff --git a/packages/flutter/test/cupertino/text_form_field_row_test.dart b/packages/flutter/test/cupertino/text_form_field_row_test.dart index bf1a229aac..1065c5218c 100644 --- a/packages/flutter/test/cupertino/text_form_field_row_test.dart +++ b/packages/flutter/test/cupertino/text_form_field_row_test.dart @@ -4,6 +4,7 @@ import 'package:flutter/cupertino.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter/src/services/spell_check.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { @@ -27,6 +28,29 @@ void main() { expect(textFieldWidget.textAlign, alignment); }); + testWidgets('Passes spellCheckConfiguration to underlying CupertinoTextField', (WidgetTester tester) async { + final SpellCheckConfiguration spellCheckConfig = SpellCheckConfiguration( + spellCheckService: DefaultSpellCheckService(), + misspelledSelectionColor: const Color.fromARGB(255, 255, 255, 0) + ); + + await tester.pumpWidget( + CupertinoApp( + home: Center( + child: CupertinoTextFormFieldRow( + spellCheckConfiguration: spellCheckConfig, + ), + ), + ), + ); + + final Finder textFieldFinder = find.byType(CupertinoTextField); + expect(textFieldFinder, findsOneWidget); + + final CupertinoTextField textFieldWidget = tester.widget(textFieldFinder); + expect(textFieldWidget.spellCheckConfiguration, spellCheckConfig); + }); + testWidgets('Passes scrollPhysics to underlying TextField', (WidgetTester tester) async { const ScrollPhysics scrollPhysics = ScrollPhysics();