Add clearError API to Form and FormFieldState#180752
Conversation
clearError API to Form and FormFieldStateclearError API to Form and FormFieldState
|
/gemini review |
There was a problem hiding this comment.
Code Review
This pull request introduces a clearError API for FormFieldState and FormState, allowing validation errors to be cleared without affecting field values or re-running validation. New tests have been added to verify this functionality. The new API is a welcome addition for managing form states more granularly.
# Conflicts: # packages/flutter/test/widgets/form_test.dart
justinmc
left a comment
There was a problem hiding this comment.
I see how this is useful and not doable without an API change, I'm on board. Some questions below though.
Piinks
left a comment
There was a problem hiding this comment.
LGTM with the doc nit remaining to land.
|
@Mairramer can you rebase this with the tip of tree? We cannot merge this without updating the base commit to within 7 days, and merging in from master will not do this. |
| /// If [testTimeRecorder] is passed, times will be recorded in it. | ||
| TestCompiler( | ||
| this.buildInfo, | ||
| BuildInfo buildInfo, |
There was a problem hiding this comment.
Hmm, it looks like this got pulled in by accident?
There was a problem hiding this comment.
I just did a rebase. It came from this PR: #181826
There was a problem hiding this comment.
It's really strange that this showed up here.
There was a problem hiding this comment.
Fixed it. That was weird, but it's all good now.
|
autosubmit label was removed for flutter/flutter/180752, because - The status or check suite Google testing has failed. Please fix the issues identified (or deflake) before re-applying this label. |
This PR introduces a `clearError` API for `FormFieldState` and `FormState`, allowing validation errors to be cleared without resetting field values or re-running validation. Closes flutter#178805 ## 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]. - [ ] 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- 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
Roll Flutter from f916dd6887bf to e8f9dc50356d (34 revisions) flutter/flutter@f916dd6...e8f9dc5 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from 9325111e6ee4 to b7db9f35f0f2 (1 revision) (flutter/flutter#182062) 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from 3167229206b5 to 9325111e6ee4 (1 revision) (flutter/flutter#182061) 2026-02-08 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from sYqpDF9l9-kldd9_Q... to iqtwdXlgKIyZkL5Li... (flutter/flutter#182058) 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from ae78024b261e to 3167229206b5 (1 revision) (flutter/flutter#182055) 2026-02-07 engine-flutter-autoroll@skia.org Roll Dart SDK from ad6368edbe02 to 965b51c219d3 (1 revision) (flutter/flutter#182050) 2026-02-07 engine-flutter-autoroll@skia.org Roll Skia from a471f253b941 to ae78024b261e (1 revision) (flutter/flutter#182049) 2026-02-07 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from IOzzhWfhdzhu3zHsz... to sYqpDF9l9-kldd9_Q... (flutter/flutter#182043) 2026-02-07 engine-flutter-autoroll@skia.org Roll Dart SDK from 02092faa97c5 to ad6368edbe02 (2 revisions) (flutter/flutter#182040) 2026-02-07 engine-flutter-autoroll@skia.org Roll Skia from 9a983f6c2c06 to a471f253b941 (24 revisions) (flutter/flutter#182039) 2026-02-07 30870216+gaaclarke@users.noreply.github.com Add buffer around rerasterized input to fragment shaders to maintain coordinate space when clipped (flutter/flutter#181743) 2026-02-07 737941+loic-sharma@users.noreply.github.com Update Flutter's style guide for dot shorthands and extension methods (flutter/flutter#181934) 2026-02-06 jason-simmons@users.noreply.github.com Manual roll Skia from 39aa2a70213a to 9a983f6c2c06 (flutter/flutter#181986) 2026-02-06 47866232+chunhtai@users.noreply.github.com Update doc in foundation to match the style guide (flutter/flutter#181972) 2026-02-06 engine-flutter-autoroll@skia.org Roll Dart SDK from ec674bdb3ae4 to 02092faa97c5 (11 revisions) (flutter/flutter#182017) 2026-02-06 engine-flutter-autoroll@skia.org Roll Packages from c197455 to 7805d3e (4 revisions) (flutter/flutter#182016) 2026-02-06 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[cupertino.dart] Implement CupertinoMenuAnchor and CupertinoMenuItem using RawMenuAnchor (#174695)" (flutter/flutter#182010) 2026-02-06 iinozemtsev@google.com Update Dart SDK to 3.12 beta1 (flutter/flutter#181948) 2026-02-06 59215665+davidhicks980@users.noreply.github.com [cupertino.dart] Implement CupertinoMenuAnchor and CupertinoMenuItem using RawMenuAnchor (flutter/flutter#174695) 2026-02-06 116356835+AbdeMohlbi@users.noreply.github.com `flutter_tool` : Remove redundant enum types inside the enum definition scope (flutter/flutter#181910) 2026-02-06 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#181973) 2026-02-05 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from J2QdLcY2gyt4NP_xV... to IOzzhWfhdzhu3zHsz... (flutter/flutter#181971) 2026-02-05 sstrickl@google.com Directly generate a Mach-O dynamic library using gen_snapshot. [reland] (flutter/flutter#181539) 2026-02-05 matej.knopp@gmail.com macOS: Implement tooltip window controller (flutter/flutter#180895) 2026-02-05 victorsanniay@gmail.com Constrain RawAutocomplete options by soft keyboard (flutter/flutter#181930) 2026-02-05 engine-flutter-autoroll@skia.org Roll Skia from 079d092f49e6 to 39aa2a70213a (1 revision) (flutter/flutter#181970) 2026-02-05 285025525@qq.com perf: web ui loadFontFromList (flutter/flutter#181440) 2026-02-05 vs.ashoknarayan@gmail.com Improve accessibility contrast for pre-test message (flutter/flutter#180469) 2026-02-05 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#181965) 2026-02-05 engine-flutter-autoroll@skia.org Roll Skia from 8543ce512d5c to 079d092f49e6 (8 revisions) (flutter/flutter#181964) 2026-02-05 50643541+Mairramer@users.noreply.github.com Add `clearError` API to Form and FormFieldState (flutter/flutter#180752) 2026-02-05 okorohelijah@google.com Bump minimum required Xcode version to 15 and recommended to 16 (flutter/flutter#180531) 2026-02-05 GiancarloCante@gmail.com Rename "widgetTester" parameter to "tester" in "WidgetTesterCallback" (flutter/flutter#180944) 2026-02-05 engine-flutter-autoroll@skia.org Roll Packages from 3bddf2c to c197455 (3 revisions) (flutter/flutter#181962) 2026-02-05 jason-simmons@users.noreply.github.com Temporarily remove the Pixel 9/API 36 device from the Firebase Test Lab tests. (flutter/flutter#181956) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 ...
This PR introduces a `clearError` API for `FormFieldState` and `FormState`, allowing validation errors to be cleared without resetting field values or re-running validation. Closes flutter#178805 ## 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]. - [ ] 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- 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
This PR introduces a `clearError` API for `FormFieldState` and `FormState`, allowing validation errors to be cleared without resetting field values or re-running validation. Closes flutter#178805 ## 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]. - [ ] 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- 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
This PR introduces a `clearError` API for `FormFieldState` and `FormState`, allowing validation errors to be cleared without resetting field values or re-running validation. Closes flutter#178805 ## 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]. - [ ] 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]. **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. <!-- 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
…r#10979) Roll Flutter from f916dd6887bf to e8f9dc50356d (34 revisions) flutter/flutter@f916dd6...e8f9dc5 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from 9325111e6ee4 to b7db9f35f0f2 (1 revision) (flutter/flutter#182062) 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from 3167229206b5 to 9325111e6ee4 (1 revision) (flutter/flutter#182061) 2026-02-08 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from sYqpDF9l9-kldd9_Q... to iqtwdXlgKIyZkL5Li... (flutter/flutter#182058) 2026-02-08 engine-flutter-autoroll@skia.org Roll Skia from ae78024b261e to 3167229206b5 (1 revision) (flutter/flutter#182055) 2026-02-07 engine-flutter-autoroll@skia.org Roll Dart SDK from ad6368edbe02 to 965b51c219d3 (1 revision) (flutter/flutter#182050) 2026-02-07 engine-flutter-autoroll@skia.org Roll Skia from a471f253b941 to ae78024b261e (1 revision) (flutter/flutter#182049) 2026-02-07 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from IOzzhWfhdzhu3zHsz... to sYqpDF9l9-kldd9_Q... (flutter/flutter#182043) 2026-02-07 engine-flutter-autoroll@skia.org Roll Dart SDK from 02092faa97c5 to ad6368edbe02 (2 revisions) (flutter/flutter#182040) 2026-02-07 engine-flutter-autoroll@skia.org Roll Skia from 9a983f6c2c06 to a471f253b941 (24 revisions) (flutter/flutter#182039) 2026-02-07 30870216+gaaclarke@users.noreply.github.com Add buffer around rerasterized input to fragment shaders to maintain coordinate space when clipped (flutter/flutter#181743) 2026-02-07 737941+loic-sharma@users.noreply.github.com Update Flutter's style guide for dot shorthands and extension methods (flutter/flutter#181934) 2026-02-06 jason-simmons@users.noreply.github.com Manual roll Skia from 39aa2a70213a to 9a983f6c2c06 (flutter/flutter#181986) 2026-02-06 47866232+chunhtai@users.noreply.github.com Update doc in foundation to match the style guide (flutter/flutter#181972) 2026-02-06 engine-flutter-autoroll@skia.org Roll Dart SDK from ec674bdb3ae4 to 02092faa97c5 (11 revisions) (flutter/flutter#182017) 2026-02-06 engine-flutter-autoroll@skia.org Roll Packages from c197455 to 7805d3e (4 revisions) (flutter/flutter#182016) 2026-02-06 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[cupertino.dart] Implement CupertinoMenuAnchor and CupertinoMenuItem using RawMenuAnchor (#174695)" (flutter/flutter#182010) 2026-02-06 iinozemtsev@google.com Update Dart SDK to 3.12 beta1 (flutter/flutter#181948) 2026-02-06 59215665+davidhicks980@users.noreply.github.com [cupertino.dart] Implement CupertinoMenuAnchor and CupertinoMenuItem using RawMenuAnchor (flutter/flutter#174695) 2026-02-06 116356835+AbdeMohlbi@users.noreply.github.com `flutter_tool` : Remove redundant enum types inside the enum definition scope (flutter/flutter#181910) 2026-02-06 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#181973) 2026-02-05 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from J2QdLcY2gyt4NP_xV... to IOzzhWfhdzhu3zHsz... (flutter/flutter#181971) 2026-02-05 sstrickl@google.com Directly generate a Mach-O dynamic library using gen_snapshot. [reland] (flutter/flutter#181539) 2026-02-05 matej.knopp@gmail.com macOS: Implement tooltip window controller (flutter/flutter#180895) 2026-02-05 victorsanniay@gmail.com Constrain RawAutocomplete options by soft keyboard (flutter/flutter#181930) 2026-02-05 engine-flutter-autoroll@skia.org Roll Skia from 079d092f49e6 to 39aa2a70213a (1 revision) (flutter/flutter#181970) 2026-02-05 285025525@qq.com perf: web ui loadFontFromList (flutter/flutter#181440) 2026-02-05 vs.ashoknarayan@gmail.com Improve accessibility contrast for pre-test message (flutter/flutter#180469) 2026-02-05 137456488+flutter-pub-roller-bot@users.noreply.github.com Roll pub packages (flutter/flutter#181965) 2026-02-05 engine-flutter-autoroll@skia.org Roll Skia from 8543ce512d5c to 079d092f49e6 (8 revisions) (flutter/flutter#181964) 2026-02-05 50643541+Mairramer@users.noreply.github.com Add `clearError` API to Form and FormFieldState (flutter/flutter#180752) 2026-02-05 okorohelijah@google.com Bump minimum required Xcode version to 15 and recommended to 16 (flutter/flutter#180531) 2026-02-05 GiancarloCante@gmail.com Rename "widgetTester" parameter to "tester" in "WidgetTesterCallback" (flutter/flutter#180944) 2026-02-05 engine-flutter-autoroll@skia.org Roll Packages from 3bddf2c to c197455 (3 revisions) (flutter/flutter#181962) 2026-02-05 jason-simmons@users.noreply.github.com Temporarily remove the Pixel 9/API 36 device from the Firebase Test Lab tests. (flutter/flutter#181956) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 ...
This PR introduces a
clearErrorAPI forFormFieldStateandFormState, allowingvalidation errors to be cleared without resetting field values or re-running
validation.
Closes #178805
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.
Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the
gemini-code-assistbot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.