-
Notifications
You must be signed in to change notification settings - Fork 0
Merge pull request #2 from Mairramer/master #3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Merge pull request #2 from Mairramer/master #3
Conversation
|
Note Gemini is unable to generate a review for this pull request due to the file types involved not being currently supported. |
Fixed RenderOverflow in RouteObserver Example: https://api.flutter.dev/flutter/widgets/RouteObserver-class.html <!-- Thanks for filing a pull request! Reviewers are typically assigned within a week of filing a request. To learn more about code review, see our documentation on Tree Hygiene: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md --> This PR is about solving render overflow issue in Route Observer Example in Live Website. I've wrapped the body with a Scrollable View to solve this issue | | | | --- | --- | | B |  | | A |  | ## 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]. - [ ] I listed at least one issue that this PR fixes in the description above. - [ ] 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. <!-- 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 --------- Co-authored-by: Victor Sanni <[email protected]>
This PR adds a new `AutovalidateMode` value: `onUserInteractionIfError`. This mode allows `Form` and `FormField` widgets to auto-validate **only when a field already has an error and the user interacts with it again**. ### Why - Current modes (`disabled`, `always`, `onUserInteraction`, `onUnfocus`) do not cover the case where developers want validation **only when correcting an error**. - This improves UX by reducing unnecessary validation calls while still ensuring errors disappear as soon as the user fixes them. ### How - Added `onUserInteractionIfError` to `AutovalidateMode`. - Updated Dartdoc with detailed description and example snippet. - Added new unit tests to validate behavior. - Verified no regressions in other modes (`always`, `onUnfocus`, `onUserInteraction`). ### Example ```dart TextFormField( autovalidateMode: AutovalidateMode.onUserInteractionIfError, validator: (value) => value!.isEmpty ? 'Required field' : null, ) ```` --- ## Related Issues Fixes #\<INSERT\_RELATED\_ISSUE\_NUMBER\_IF\_ANY> --- ## Tests * Added widget tests to confirm that: * No validation occurs until a field has an error. * Once an error exists, validation runs automatically on user interaction. * Resetting the form clears errors correctly. * Regression tests ensure that `always`, `onUserInteraction`, and `onUnfocus` modes still behave correctly. --- ## Pre-launch / Reviewer Checklist * [x] I have read the [[Contributor Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md)](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md) * [x] I have read the \[Tree Hygiene] wiki page and followed its guidance * [x] I have read and followed the \[Flutter Style Guide] * [x] I signed the \[CLA] * [x] I added a new enum value with clear Dartdoc (`onUserInteractionIfError`) * [x] I added example code in the Dartdoc * [x] I added new widget/unit tests for the new mode * [x] All existing and new tests pass * [x] I ran `flutter analyze` and fixed all issues * [x] No breaking changes introduced (or marked accordingly) --- ## Breaking Change * [x] Yes * [x] No --- ## Screenshots / Demo (if applicable) *(N/A — logic-only change)* --- ## Reviewer Notes * The new mode reduces unnecessary validation until the user corrects an error. * All tests confirm correct behavior and no regressions in existing modes. --------- Co-authored-by: Loïc Sharma <[email protected]>
…tter#179132) Fixes: flutter#178973 ## 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. - [ ] 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]. **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
…8 strings on Windows (flutter#179528) Fixes flutter#178896 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…ter#178817) (flutter#179352) This is a reland of flutter#178817, which was reverted in flutter#179100 due to test failures. The original PR introduced `hitTestBehavior` to the semantics framework but incorrectly applied `opaque` behavior to `ModalRoute`, which blocked platform views from receiving pointer events. Instead of making the entire modal opaque, we: 1. Keep `ModalRoute` without explicit `hitTestBehavior` (defaults to `defer`) 2. Make only the dialog/sheet content opaque (blocks clicks to barrier) 3. Platform views remain clickable because they're outside the opaque content boundary Fixes flutter#149001 Original PR: flutter#177570 Revert: flutter#178744
…79714) https://skia.googlesource.com/skia.git/+log/e61cc6d073fd..59c6cad539f7 2025-12-10 [email protected] Modernize SkFontMgr_Mac::onMatchFamilyStyleCharacter 2025-12-10 [email protected] Upgrade gradle to version 9.1.0 2025-12-10 [email protected] Roll vulkan-deps from 9f7342ee3761 to 50c5f8b4dd57 (8 revisions) 2025-12-10 [email protected] Revert "Pass first family name to paragraph fallback" 2025-12-10 [email protected] Revert "[rust bmp] Add initial Rust BMP decoder implementation" 2025-12-10 [email protected] Roll HarfBuzz from 08b52ae2 to 31695252 (971 commits) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2025-12-10 [email protected] [rust bmp] Add initial Rust BMP decoder implementation 2025-12-10 [email protected] Pass first family name to paragraph fallback 2025-12-10 [email protected] Update CanvasKit to use const version of SerialProcs 2025-12-10 [email protected] Remove legacy SkParagraphBuilder API 2025-12-10 [email protected] [wgsl] Stop forcing all function calls into scratch lets 2025-12-10 [email protected] [ganesh] Guard division by zero in AAConvexPathRenderer 2025-12-10 [email protected] [graphite] Use depth/stencil image aspects for default d/s attachments 2025-12-10 [email protected] Make SkDebugf calls log at Android's WARN level in RenderEngine 2025-12-10 [email protected] Manual roll Dawn from 57fca18a1603 to 9e1721615b33 (7 revisions) 2025-12-10 [email protected] Roll vulkan-deps from 3486579f434a to 9f7342ee3761 (5 revisions) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2025-12-10 [email protected] Roll ANGLE from 78bb5a33a9e9 to c2a048f9a1db (7 revisions) 2025-12-10 [email protected] Roll Skia Infra from ca3eb8741f18 to 492dfbfe3bb2 (10 revisions) 2025-12-10 [email protected] Roll Dawn from 8de9b80c5bd9 to 57fca18a1603 (17 revisions) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…79312) Fixes flutter#178746 Before: <img width="341" height="527" alt="image" src="https://github.com/user-attachments/assets/b2458490-109f-4e6f-b35d-3bc0e5648de6" /> After: <img width="295" height="566" alt="image" src="https://github.com/user-attachments/assets/f5958934-dae2-4181-b142-9c68f8cdc2e8" /> ## 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]. **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#179715) https://dart.googlesource.com/sdk.git/+log/077062c5e515..dbcb567e2432 2025-12-11 [email protected] Version 3.11.0-232.0.dev 2025-12-10 [email protected] Version 3.11.0-231.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…9721) https://skia.googlesource.com/skia.git/+log/59c6cad539f7..deb0153719dd 2025-12-11 [email protected] Roll Dawn from 9e1721615b33 to f39150de4906 (8 revisions) 2025-12-11 [email protected] Roll Skia Infra from 492dfbfe3bb2 to 6cd15cab2194 (10 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…... (flutter#179729) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Fixed RenderOverflow in RouteObserver Example: https://api.flutter.dev/flutter/widgets/RouteObserver-class.html <!-- Thanks for filing a pull request! Reviewers are typically assigned within a week of filing a request. To learn more about code review, see our documentation on Tree Hygiene: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md --> This PR is about solving render overflow issue in Route Observer Example in Live Website. I've wrapped the body with a Scrollable View to solve this issue | | | | --- | --- | | B |  | | A |  | ## 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]. - [ ] I listed at least one issue that this PR fixes in the description above. - [ ] 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. <!-- 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 --------- Co-authored-by: Victor Sanni <[email protected]>
This PR adds a new `AutovalidateMode` value: `onUserInteractionIfError`. This mode allows `Form` and `FormField` widgets to auto-validate **only when a field already has an error and the user interacts with it again**. ### Why - Current modes (`disabled`, `always`, `onUserInteraction`, `onUnfocus`) do not cover the case where developers want validation **only when correcting an error**. - This improves UX by reducing unnecessary validation calls while still ensuring errors disappear as soon as the user fixes them. ### How - Added `onUserInteractionIfError` to `AutovalidateMode`. - Updated Dartdoc with detailed description and example snippet. - Added new unit tests to validate behavior. - Verified no regressions in other modes (`always`, `onUnfocus`, `onUserInteraction`). ### Example ```dart TextFormField( autovalidateMode: AutovalidateMode.onUserInteractionIfError, validator: (value) => value!.isEmpty ? 'Required field' : null, ) ```` --- ## Related Issues Fixes #\<INSERT\_RELATED\_ISSUE\_NUMBER\_IF\_ANY> --- ## Tests * Added widget tests to confirm that: * No validation occurs until a field has an error. * Once an error exists, validation runs automatically on user interaction. * Resetting the form clears errors correctly. * Regression tests ensure that `always`, `onUserInteraction`, and `onUnfocus` modes still behave correctly. --- ## Pre-launch / Reviewer Checklist * [x] I have read the [[Contributor Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md)](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md) * [x] I have read the \[Tree Hygiene] wiki page and followed its guidance * [x] I have read and followed the \[Flutter Style Guide] * [x] I signed the \[CLA] * [x] I added a new enum value with clear Dartdoc (`onUserInteractionIfError`) * [x] I added example code in the Dartdoc * [x] I added new widget/unit tests for the new mode * [x] All existing and new tests pass * [x] I ran `flutter analyze` and fixed all issues * [x] No breaking changes introduced (or marked accordingly) --- ## Breaking Change * [x] Yes * [x] No --- ## Screenshots / Demo (if applicable) *(N/A — logic-only change)* --- ## Reviewer Notes * The new mode reduces unnecessary validation until the user corrects an error. * All tests confirm correct behavior and no regressions in existing modes. --------- Co-authored-by: Loïc Sharma <[email protected]>
…tter#179132) Fixes: flutter#178973 ## 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. - [ ] 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]. **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
…8 strings on Windows (flutter#179528) Fixes flutter#178896 --------- Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
…ter#178817) (flutter#179352) This is a reland of flutter#178817, which was reverted in flutter#179100 due to test failures. The original PR introduced `hitTestBehavior` to the semantics framework but incorrectly applied `opaque` behavior to `ModalRoute`, which blocked platform views from receiving pointer events. Instead of making the entire modal opaque, we: 1. Keep `ModalRoute` without explicit `hitTestBehavior` (defaults to `defer`) 2. Make only the dialog/sheet content opaque (blocks clicks to barrier) 3. Platform views remain clickable because they're outside the opaque content boundary Fixes flutter#149001 Original PR: flutter#177570 Revert: flutter#178744
…79714) https://skia.googlesource.com/skia.git/+log/e61cc6d073fd..59c6cad539f7 2025-12-10 [email protected] Modernize SkFontMgr_Mac::onMatchFamilyStyleCharacter 2025-12-10 [email protected] Upgrade gradle to version 9.1.0 2025-12-10 [email protected] Roll vulkan-deps from 9f7342ee3761 to 50c5f8b4dd57 (8 revisions) 2025-12-10 [email protected] Revert "Pass first family name to paragraph fallback" 2025-12-10 [email protected] Revert "[rust bmp] Add initial Rust BMP decoder implementation" 2025-12-10 [email protected] Roll HarfBuzz from 08b52ae2 to 31695252 (971 commits) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2025-12-10 [email protected] [rust bmp] Add initial Rust BMP decoder implementation 2025-12-10 [email protected] Pass first family name to paragraph fallback 2025-12-10 [email protected] Update CanvasKit to use const version of SerialProcs 2025-12-10 [email protected] Remove legacy SkParagraphBuilder API 2025-12-10 [email protected] [wgsl] Stop forcing all function calls into scratch lets 2025-12-10 [email protected] [ganesh] Guard division by zero in AAConvexPathRenderer 2025-12-10 [email protected] [graphite] Use depth/stencil image aspects for default d/s attachments 2025-12-10 [email protected] Make SkDebugf calls log at Android's WARN level in RenderEngine 2025-12-10 [email protected] Manual roll Dawn from 57fca18a1603 to 9e1721615b33 (7 revisions) 2025-12-10 [email protected] Roll vulkan-deps from 3486579f434a to 9f7342ee3761 (5 revisions) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). 2025-12-10 [email protected] Roll ANGLE from 78bb5a33a9e9 to c2a048f9a1db (7 revisions) 2025-12-10 [email protected] Roll Skia Infra from ca3eb8741f18 to 492dfbfe3bb2 (10 revisions) 2025-12-10 [email protected] Roll Dawn from 8de9b80c5bd9 to 57fca18a1603 (17 revisions) 2025-12-10 recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com Roll recipe dependencies (trivial). If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…79312) Fixes flutter#178746 Before: <img width="341" height="527" alt="image" src="https://github.com/user-attachments/assets/b2458490-109f-4e6f-b35d-3bc0e5648de6" /> After: <img width="295" height="566" alt="image" src="https://github.com/user-attachments/assets/f5958934-dae2-4181-b142-9c68f8cdc2e8" /> ## 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]. **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#179715) https://dart.googlesource.com/sdk.git/+log/077062c5e515..dbcb567e2432 2025-12-11 [email protected] Version 3.11.0-232.0.dev 2025-12-10 [email protected] Version 3.11.0-231.0.dev If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/dart-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…9721) https://skia.googlesource.com/skia.git/+log/59c6cad539f7..deb0153719dd 2025-12-11 [email protected] Roll Dawn from 9e1721615b33 to f39150de4906 (8 revisions) 2025-12-11 [email protected] Roll Skia Infra from 492dfbfe3bb2 to 6cd15cab2194 (10 revisions) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/skia-flutter-autoroll Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
…... (flutter#179729) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter Please CC [email protected],[email protected] on the revert to ensure that a human is aware of the problem. To file a bug in Flutter: 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 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
|
/gemini review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
This pull request introduces a wide range of improvements and fixes across the Flutter engine and framework. Key changes include:
- A new
fml::PathToUtf8utility to ensure correct UTF-8 path handling on Windows. - Detection of overlapping stroke caps in stroked arcs to prevent overdraw, along with new rendering tests.
- The introduction of
SemanticsHitTestBehaviorto prevent accidental dismissals ofBottomSheetandDialogwidgets by making their background opaque to hit testing. - A new
AutovalidateMode.onUserInteractionIfErrorfor more fine-grained control over form validation. - A layout fix for
SliverMainAxisGroupwhen dealing with pinned children. - A fix for a layout overflow in a
RouteObserverexample.
The changes are generally well-implemented and come with corresponding tests. My feedback is focused on improving the correctness of some of the new C++ unit tests for arc rendering.
| if (sweep < 348.6) { | ||
| EXPECT_EQ(result.mode, GeometryResult::Mode::kNormal) | ||
| << "start: " << start << " sweep: " << sweep; | ||
| } else { | ||
| EXPECT_EQ(result.mode, GeometryResult::Mode::kPreventOverdraw) | ||
| << "start: " << start << " sweep: " << sweep; | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This test case for round caps with a 10px stroke width doesn't seem to be testing the kPreventOverdraw scenario correctly. The for loop for sweep (for (auto sweep = 0; sweep < 360; sweep += 12)) generates values up to 348. Since 348 < 348.6 is true, the else block which checks for GeometryResult::Mode::kPreventOverdraw is never reached. This means the test doesn't verify the overlap detection for this case.
To fix this, you could adjust the loop to include values greater than or equal to 348.6, for example by changing the loop condition to sweep <= 360.
| GeometryResult result = | ||
| geometry->GetPositionBuffer(*GetContentContext(), {}, mock_pass); | ||
|
|
||
| if (sweep < 300.0) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There appears to be a slight logic error in this condition. The comment on line 2360 states that overlap starts at 300.1 degrees. However, for a sweep value of 300, this condition sweep < 300.0 evaluates to false, causing the test to expect kPreventOverdraw. This contradicts the comment, as a sweep of 300.0 degrees should still be considered normal.
To align with the comment, you should adjust the condition.
| if (sweep < 300.0) { | |
| if (sweep < 300.1) { |
Merge
Replace this paragraph with a description of what this PR is changing or adding, and why. Consider including before/after screenshots.
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.
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
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.