tree 6b81cd3c3bac1c4651f5f584bcf8b77c8a58171d
parent b2977965ce7c5d75a99ec050ca2f5094d6ea5dec
author Mohanad Abdallah <55765052+MohanadAbdallah-mv@users.noreply.github.com> 1790723939 +0000
committer GitHub <noreply@github.com> 1790723939 +0000
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsFcBAABCAAQBQJqvEqpCRC1aQ7uu5UhlAAAzXYQAEzNFLhEDEppJaQaw6unqhf7
 chonZKpmWXWdLsHSzmlKqKHlkPA1bpuwWS+KCJNFezGjqgdZSgkJiJ/hhfyVbCJ3
 s/k/GKRIkoHD8eDdR/jp7V7PdMqrrEXoYHL8oAmC3rZWcB2cPsHUZFjByNvcMosd
 sKGvZU7JzCy1G3hqWDhTvbtZZDed0fhsjlzAJUfegaA54iGPrSE3hybrJaJGgBSE
 y0kNbFIodEuwZDWmmCIXWbGu8xnDoLnE7eWGbA6ZdB8K78Ok5zXqghfm+kp55YRp
 4a0n9Ug225+VYy2QzvrotYtLJ9Q5QWjJ0mBpB7LV+ZUFFveCaiWJyGfX/FHUsCr5
 WOCMtBU/KBadAD6Pd9e8HVUeh9gLwhZGespB+BXa+fHVtmqZ53/aGrhxhHylLwWu
 XnHEkK/djFGnqUC4SUktpDyrKwj4z/mR20kMlHCLo1aOkhX5Jy38MIvHWjKyeirF
 5GCFxVmVVthAfbu3W4/Av4CzPFNvYVc0oHYTFFK3i7LYoAz4oekWkuEpSh1Dv/bu
 jMUUP+o/0TqVrvFgqus7eXXofr1KT+EIBUcGRPGuEOcJPtww8CtF9YAeMxcOkWSI
 KXDZHXBPL8tPKjXMEyt7k/HFQclJW7lhaB5o9OFqdFrYO/xpGg8iYKeIDl/6YNtr
 cuuyl5LVEnPzdXsOUS/h
 =7qFl
 -----END PGP SIGNATURE-----
 

Rename "subtext" to "supportingTextPadding" in `FormField`'s documentation (#183582)

**Maintainer's note:** This PR was originally named "Adding
supportingTextPadding to InputDecorator and InputDecorationTheme", and
has been split into two parts due to decoupling. The majority of the
change is now applied by https://github.com/flutter/packages/pull/12769
. This PR only addresses the terminology change, since we discovered
that the M3 spec (https://m3.material.io/components/text-fields/specs )
officially refers to error text and hint text as "supporting text".

-----

This PR introduces the `supportingTextPadding` property to
`InputDecorator`, `InputDecoration`, and `InputDecorationThemeData`.
While originally conceived as `errorPadding`, this property was renamed
to `supportingTextPadding` during review to align with the Material
Design 3 specification, as it controls the padding for the entire
supporting text row (which includes helper text, error text, and counter
widgets).
Additionally, this PR addresses layout, intrinsic sizing, and code
consistency concerns raised during the review process:
#### Key Features & Refactors:
1. **Added `supportingTextPadding`:** Allows complete, independent
control over the padding of the supporting text row
(helper/error/counter).
2. **Decoupled Layout Constraints:** Introduced
`supportingTextConstraints` in `_layout()` to bound the supporting text
row independently of `contentConstraints`, ensuring custom paddings do
not break or shift the layout of inline `prefix`/`suffix` widgets.
3. **Fixed Intrinsic Height Mismatches:** Corrected
`computeMinIntrinsicHeight()` to compute `supportingTextWidth`
separately from the primary width deflation path, ensuring intrinsic
height calculations accurately predict wrapped text heights.
4. **Unified Terminology:** Renamed all legacy internal `subtext`
references (e.g. `_SubtextSize`, `_computeSubtextSizes`,
`subtextHeight`) to `supportingText` to match the public property name
and the M3 spec.


*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*
Fixes #175834 

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [AI contribution guidelines] and understand my
responsibilities, or I am not using AI tools.
- [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.
- [ ] 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
[AI contribution guidelines]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines
[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

---------

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>