9361 Commits

Author SHA1 Message Date
Onnimanni Hannonen
1d268f4bf6
Add focus support for CupertinoActionSheetAction #166398 (#167119)
<!--
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 fixes #166398
- Adds focus support for `CupertinoActionSheetAction`. This makes it
work with keyboard shortcuts
- Creates new widget, `CupertinoTraversalGroup` that applies a Cupertino
style focus border around its child when any of its descendant has focus
- Employs `CupertinoTraversalGroup` in `CupertinoActionSheet`

How the new implementation looks and behaves:

https://github.com/user-attachments/assets/ea6789f1-921d-4598-bcca-489dc063ff73

How the native counterpart looks and behaves:

https://github.com/user-attachments/assets/4c6ae2a0-7205-4de2-b981-ec7f4839da6e

## 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.

<!-- 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: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-12 04:35:43 +00:00
Thomas Guerin
4ef262721c
[Animation] Add granular frame forcing to animations (#173862)
This change adds opt-in, subtree-scoped frame forcing for Flutter
animations as described in
https://github.com/flutter/flutter/issues/174356#issuecomment-3287185284

Fixes https://github.com/flutter/flutter/issues/174356

This change could help fix #133533. 

## 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.
2025-11-11 23:34:27 +00:00
Ahmed Mohamed Sameh
4330dd416c
Make sure that a DefaultTabController doesn't crash in 0x0 environment (#178117)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
DefaultTabController widget.
2025-11-11 19:10:51 +00:00
auto-submit[bot]
ef29db350f
Reverts "Feat: Add a11y for loading indicators (#165173)" (#178316)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#165173
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: chingjun
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: The PR did not finish "Google Testing", and
actually caused several failures in Google
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: rkishan516
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {chunhtai, flutter-zl}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Feat: Add a11y for loading indicators
fixes: #161631 

## 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.
<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-11-11 19:04:20 +00:00
Renzo Olivares
36b1877073
Listen to text spacing overrides on the web (#178081)
Original PR/Discussion: https://github.com/flutter/flutter/pull/172915

# Framework:
* `EditableText`/`SelectableText`, applies
`lineHeightScaleFactorOverride`, `wordSpacingOverride`, and
`letterSpacingOverride` to it's `TextStyle` similarly to how we already
do for bold platform overrides. Note `SelectableText` is built on
`EditableText` so it also applies these overrides.
* `Text`, applies `lineHeightScaleFactorOverride`,
`wordSpacingOverride`, and `letterSpacingOverride` to it's `TextStyle`
similarly to how we already do for bold platform overrides.
* Exposes line height override through
`MediaQueryData.lineHeightScaleFactorOverride` and
`maybeLineHeightScaleFactorOverrideOf(context)`.
* Exposes letter spacing override through
`MediaQueryData.letterSpacingOverride` and
`maybeLetterSpacingOverrideOf(context)`.
* Exposes word spacing override through
`MediaQueryData.wordSpacingOverride` and
`maybeWordSpacingOverrideOf(context)`.
* Exposes paragraph spacing override through
`MediaQueryData.paragraphSpacingOverride` and
`maybeParagraphSpacingOverrideOf(context)`.
* `MediaQuery.applyTextStyleOverrides()` \
`MediaQueryData.applyTextStyleOverrides()` to be able to reset/override
the text spacing settings on `MediaQueryData`.

# Engine:
* Introduces new members on `PlatformDispatcher` API that hold the text
spacing properties that are overridden on the web.
* We provide the `lineHeightScaleFactorOverride`,
`letterSpacingOverride`, `wordSpacingOverride`, and
`paragraphSpacingOverride` on the web by attaching a `ResizeObserver` to
an off-screen hidden element, when its size changes we capture its text
spacing CSS properties, and notify the framework through
`onMetricsChanged`.

Fixes #142712


https://github.com/user-attachments/assets/aaaa3e74-c232-4956-acd2-ae1a4487e415

## 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.

---------

Co-authored-by: Renzo Olivares <roliv@google.com>
2025-11-11 18:44:19 +00:00
Kishan Rathore
e5f799a631
refactor: Migrate Expansible animation properties to AnimationStyle for a less broad API surface (#177966)
## Changes

* Add animationStyle to Exapnsible
* Mark duration, curve and reverseCurve as deprecated
* Add data driven fixes

fixes: #177799

## 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.
2025-11-11 18:41:59 +00:00
Kishan Rathore
2981516d74
Feat: Add a11y for loading indicators (#165173)
Feat: Add a11y for loading indicators
fixes: #161631 

## 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.
2025-11-11 06:17:40 +00:00
Ahmed Mohamed Sameh
45fe915122
Make sure that a RefreshIndicator doesn't crash in 0x0 environment (#177644)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the RefreshIndicator
widget.

---------

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
2025-11-11 01:01:06 +00:00
Ahmed Mohamed Sameh
1b40c01079
Make sure that a TextFormField doesn't crash in 0x0 environment (#178233)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the TextFormField
widget.
2025-11-11 00:47:14 +00:00
Qun Cheng
fccfa978a9
Reland "Refactor OverlayPortal semantics (#173005)" (#178095)
Reverts flutter/flutter#178007

This PR is to reland https://github.com/flutter/flutter/pull/173005 and
add a fix to avoid infinite loop. The fix doesn't contain engine
changes.
2025-11-11 00:35:40 +00:00
Ahmed Mohamed Sameh
c99db0dc0d
Make sure that a Tab doesn't crash in 0x0 environment (#178118)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the Tab widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-11 00:34:17 +00:00
Ahmed Mohamed Sameh
b076f52ee1
Make sure that a TabPageSelectorIndicator doesn't crash in 0x0 enviro… (#178212)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
TabPageSelectorIndicator widget.
2025-11-11 00:34:17 +00:00
Ahmed Mohamed Sameh
951b3cad03
Make sure that a TextField doesn't crash in 0x0 environment (#178232)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the TextField widget.
2025-11-11 00:34:16 +00:00
Ahmed Mohamed Sameh
b705072f08
Make sure that a TextButton doesn't crash in 0x0 environment (#178213)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the TextButton
widget.
2025-11-11 00:32:16 +00:00
Huy
ab919febb3
Fix VoiceOver does not announce state of ButtonSegment (#175635)
- Fix https://github.com/flutter/flutter/issues/146987
- As explained at
https://github.com/flutter/flutter/issues/146987#issuecomment-3294737075:
this PR proposes _replacing_ `checked` with `selected` here:
 

f4de70c647/packages/flutter/lib/src/material/segmented_button.dart (L634)
 
Then VoiceOver can indicate when the button segment is selected. It's
_replacing_ action but not _adding_ because _adding_ (keep both
`checked` and `selected`) will cause the button to be read with both
checked and selected states with Android TalkBack reader that may cause
confusion to users (watch demo videos). I also did test with iOS
segmented control (storyboard) and Android Jetpack Compose to compare:
on these native platforms, it announces `selected` state (watch demo
videos).

<details>
<summary>Demo Flutter app - after the fix</summary>

| Flutter Android | Flutter iOS |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/458c9b78-8275-45db-83cb-b2581505d240"/>
| <video
src="https://github.com/user-attachments/assets/1c69694d-67f8-4f8c-a453-2cf7696e43b5"/>

</details>

<details>
<summary>Demo native platforms</summary>

| Android Jetpack Compose | iOS segmented control (storyboard) |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/5b682c7e-4c50-49be-a613-58673154aa88"/>
| <video
src="https://github.com/user-attachments/assets/9faba9ea-d373-4756-953a-cde510871247"/>

</details>

## 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

Signed-off-by: huycozy <huy@nevercode.io>
Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
2025-11-10 22:43:23 +00:00
Ahmed Mohamed Sameh
1746ce8e05
Make sure that a SelectableText doesn't crash in 0x0 environment (#177875)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the SelectableText
widget.

---------

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-10 21:24:02 +00:00
Kostia Sokolovskyi
7947aef699
Update CupertinoSwitch thumb to snap to the sides on drag. (#176825)
Fixes https://github.com/flutter/flutter/issues/166485

## Description

- Updates `CupertinoSwitch` thumb to snap to the sides on drag
- Updates `CupertinoSwitch` to emit vibration not when drag starts, but
when the dragged thumb crosses the middle point

| BEFORE | AFTER |
| - | - |
| <video alt="before"
src="https://github.com/user-attachments/assets/467f0a3c-ab6a-40c0-a0fe-6b1ff835bbb0"
/> | <video alt="after"
src="https://github.com/user-attachments/assets/9bc21bdc-e8a3-4626-8155-1d90614a72fa"
/> |

## 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].

<!-- 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 <victorsanniay@gmail.com>
2025-11-10 20:57:45 +00:00
Ahmed Mohamed Sameh
9f666e161f
Make sure that a SpellCheckSuggestionsToolbar doesn't crash in 0x0 en… (#177965)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
SpellCheckSuggestionsToolbar widget.
2025-11-10 20:44:39 +00:00
Tomoo Kikuchi
35a9f5b6ac
Add DeviceOrientationBuilder widget by MediaQuery orientation (#177437)
<!--
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
-->

 ## Issues Fixed

  Fixes https://github.com/flutter/flutter/issues/177435

On foldable Android devices, `OrientationBuilder` and
`MediaQuery.orientation` can report different orientations.
`OrientationBuilder` calculates orientation from layout constraints
(width vs height),
while `MediaQuery` reports the actual device orientation from the
platform. This PR adds a new `DeviceOrientationBuilder` widget that uses
`MediaQuery.orientationOf()` to ensure consistency with the
  device's actual orientation.

  ## Breaking Changes

No breaking changes. This PR does not modify any existing code in the
flutter/tests repo or require a migration guide.

## 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.

**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
2025-11-10 20:44:36 +00:00
Jason Simmons
60be753a43
[Android] Encode the original pointer count in messages that represent Android touch events (#178015)
Android touch events include updates to multiple pointers, but each
pointer data message sent from the embedder to the framework represents
a single pointer. So the Android embedder will send multiple messages
for each touch event, and the framework's AndroidViewController will
reassemble the messages and forward the resulting event to the platform
view.

The AndroidViewController tracks the number of active pointers in its
own local state. If that state is out of sync with the event handled by
the Android embedder, then the AndroidViewController may send duplicate
events to the platform view.

This PR encodes the Android touch event's pointer count in the messages
sent to the framework. This allows the AndroidViewController to reliably
determine whether it has received all of the pointer messages that
originated from an event.

Fixes https://github.com/flutter/flutter/issues/176574
2025-11-10 20:43:48 +00:00
Ahmed Mohamed Sameh
4a19bffa14
Make sure that a SwitchListTile doesn't crash in 0x0 environment (#178069)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the SwitchListTile
widget.

Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
2025-11-10 20:43:45 +00:00
chunhtai
8b32a3daf7
Fixes tab to allow child to have semantics role (#177809)
<!--
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
-->

as title, unblocks https://github.com/flutter/flutter/pull/165173

## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] 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 `///`).
- [ ] 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
[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
2025-11-08 00:46:17 +00:00
Kostia Sokolovskyi
fc3c5a2c4b
Fix text input actions in DropdownMenu. (#177313)
Fixes https://github.com/flutter/flutter/issues/177009

### Description

- Moves `MenuButton` submit logic from `onEditingComplete` to
`onSubmitted` to allow `TextField` to handle the `textInputAction` logic
- Wraps each item into `ExcludeFocus` to enable proper
`TextInputAction.previous` handling. If we don't wrap each child in
`ExcludeFocus`, then focus will be moved to one of them, which is not
the expected behavior for `TextInputAction.previous`.

| BEFORE | AFTER |
| - | - |
| <video alt="before"
src="https://github.com/user-attachments/assets/a50d41de-7e54-409b-bf81-80dfb1db132f"
/> | <video alt="after"
src="https://github.com/user-attachments/assets/152e47e6-d774-481c-8478-af526b5f6749"
/> |

<details closed><summary>Code sample</summary>

```dart
import 'package:flutter/material.dart';

void main() {
  runApp(const DropdownMenuExample());
}

class DropdownMenuExample extends StatefulWidget {
  const DropdownMenuExample({super.key});

  @override
  State<DropdownMenuExample> createState() => _DropdownMenuExampleState();
}

class _DropdownMenuExampleState extends State<DropdownMenuExample> {
  final FocusNode _previousFocusNode = FocusNode(debugLabel: 'previous');
  final FocusNode _textFieldFocusNode = FocusNode(debugLabel: 'textField');
  final FocusNode _nextFocusNode = FocusNode(debugLabel: 'next');

  @override
  void dispose() {
    _previousFocusNode.dispose();
    _textFieldFocusNode.dispose();
    _nextFocusNode.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(colorSchemeSeed: Colors.green),
      home: Scaffold(
        body: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.center,
            mainAxisAlignment: MainAxisAlignment.center,
            spacing: 20,
            children: [
              TextField(
                focusNode: _previousFocusNode,
                textInputAction: TextInputAction.next,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Previous TextField',
                ),
              ),
              DropdownMenu<String>(
                label: Text('Dropdown with filter cannot close keyboard'),
                initialSelection: 'green',
                focusNode: _textFieldFocusNode,
                requestFocusOnTap: true,
                showTrailingIcon: false,
                textInputAction: TextInputAction.next,
                onSelected: (String? color) {
                  print('SELECTED $color');
                },
                dropdownMenuEntries: [
                  DropdownMenuEntry(value: 'red', label: 'red'),
                  DropdownMenuEntry(value: 'green', label: 'green'),
                  DropdownMenuEntry(value: 'blue', label: 'blue'),
                ],
              ),
              TextField(
                focusNode: _nextFocusNode,
                textInputAction: TextInputAction.done,
                decoration: InputDecoration(
                  border: OutlineInputBorder(),
                  labelText: 'Next TextField',
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
```

</details>

There is still one behavior I would like to discuss. When the
`showTrailingIcon: true` and `textInputAction: TextInputAction.previous`
are used, the focus moves not to the previous field but to the
`IconButton`. If we wrap the `IconButton` with `ExcludeFocus`, then this
is fixed, but I am not sure whether this is the correct way to proceed.

| TextInputAction.previous and no ExcludeFocus on IconButton |
TextInputAction.previous and ExcludeFocus on IconButton |
| - | - |
| <video alt="before"
src="https://github.com/user-attachments/assets/76c90dcf-3ea1-492f-8e67-7e987b08c2ff"
/> | <video alt="after"
src="https://github.com/user-attachments/assets/2a1600a2-e308-430e-a12f-acdc06cbf81c"
/> |

## 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.

<!-- 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
2025-11-07 14:48:29 +00:00
Kishan Rathore
83081357ef
fix: findChildIndexCallback to take seperators into account for seperated named constructor in ListView and SliverList (#174491)
FindChildIndexCallback to take seperators into account for seperated
named constructor in ListView and SliverList
fixes: #174261

## Migration guide

https://github.com/flutter/website/pull/12636

## 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.
2025-11-07 01:09:17 +00:00
Kostia Sokolovskyi
c0e052941a
Add haptic notifications support. (#177721)
Closes https://github.com/flutter/flutter/issues/150029

### Description
- Adds `successNotification`, `warningNotification` and
`errorNotification` haptics to the framework
- Adds `UINotificationFeedbackTypeSuccess`,
`UINotificationFeedbackTypeWarning` and
`UINotificationFeedbackTypeError` haptics support on iOS
- Adds `HapticFeedbackConstants.CONFIRM` and
`HapticFeedbackConstants.REJECT` haptics support on Android
- Adds tests


| iOS | Android | Web |
|:-:|:-:|:-:|
| UINotificationFeedbackTypeSuccess | HapticFeedbackConstants.CONFIRM |
20ms vibration |
| UINotificationFeedbackTypeWarning |
HapticFeedbackConstants.KEYBOARD_TAP | 20ms vibration |
| UINotificationFeedbackTypeError | HapticFeedbackConstants.REJECT |
30ms vibration |

## 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.

<!-- 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
2025-11-06 22:53:22 +00:00
Bruno Leroux
411566a2e2
Allow label to be used to compute InputDecorator Intrinsic width (#178101)
## Description

This PR adds `InputDecorator.maintainLabelSize` (similar to
`InputDecorator.maintainHintSize`) to allow the label to be used in the
intrinsic width calculation (if could be used for the intrinsic height
calculation later if needed).

I opted for this flag (and defaulting to false) because changing the
default calculation would probably break various usages.
See
https://github.com/flutter/flutter/issues/178099#issuecomment-3496116095
for why this change will be helpful to simplify and fix DropdownMenu
implementation.


## Before

The label might be cut off:

<img width="126" height="71" alt="Screenshot 2025-11-05 at 20 16 43"
src="https://github.com/user-attachments/assets/61d9f817-5c58-43f9-9307-976f9c124ec7"
/>

## After

The label is entirely visible because it is part of the intrinsic width
calculation:

<img width="126" height="71" alt="Screenshot 2025-11-05 at 20 16 09"
src="https://github.com/user-attachments/assets/47360e17-3cde-4f05-8a6b-cc9e86644ffc"
/>


## Related Issue

Fixes [DropdownMenu menu panel does not close when pressing ESC and
requestFocusOnTap is
false](https://github.com/flutter/flutter/issues/177993)
Part of https://github.com/flutter/flutter/issues/123797
 
## Tests

- Adds 4 tests.
- Updates 1 non-related test where I spotted some nits.
2025-11-06 21:45:20 +00:00
Robert Ancell
c5e809a998
Remove WindowingOwner.hasTopLevelWindows (#178033)
This function doesn't seem to serve any purpose.
Top level is not a term we are currently using in the multi window code.
If we want to track if we have open windows, this can be done in the
Flutter framework - it doesn't need to be done at the platform level.
2025-11-06 13:11:28 +00:00
Bruno Leroux
c093967de2
Fix DropdownMenu escape key does not close the menu (#178002)
## Description

This PR fixes escape key not closing the menu when
`DropdownMenu.requestFocusOnTap` is false.

## Related Issue

Fixes [DropdownMenu menu panel does not close when pressing ESC and
requestFocusOnTap is
false](https://github.com/flutter/flutter/issues/177993)
Part of https://github.com/flutter/flutter/issues/123797
 
## Tests

- Adds 3 tests.
- Updates 2 non-related tests where I spotted some nits.
2025-11-06 10:34:26 +00:00
Lau Ching Jun
f066ed6591
Revert "Refactor OverlayPortal semantics (#173005)" (#178007)
This reverts commit ccf6466b14e144971a7d65983bdd16459d65a62a.

~This is a test PR for investigation, the commit seems to be breaking a
customer app.~

The original PR caused b/457553134
2025-11-06 03:41:26 +00:00
Jaineel Mamtora
8892bc8fed
fix: inconsistent horizontal spacing between hours and mins in time picker for non-english language (#173706)
<!--
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 aims to fix an open issue:
https://github.com/flutter/flutter/issues/173621

## 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 `///`).
- [ ] 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.

## Screenshots

Please find below the _before_ and _after_ screenshots 

- Before
<img width="294" height="264" alt="before_fixing_spacing"
src="https://github.com/user-attachments/assets/ce519c72-cb5e-4f08-8976-abb01f9eb76d"
/>

- After
<img width="294" height="261" alt="after_fixing_spacing"
src="https://github.com/user-attachments/assets/f010cbbf-680d-495b-a028-16c7fbdb9a09"
/>


<!-- 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: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-05 22:15:32 +00:00
Luke Memet
c652b53819
Fix ReorderableList items jumping when drag direction reverses mid-animation (#173241)
When rapidly dragging items in a ReorderableList before animations
complete, items would jump to their expected positions rather than
smoothly transitioning.

## Problem

<p align="center">
<img
src="https://github.com/user-attachments/assets/0efb250c-2960-4942-959f-59eccc20cefb"
alt="demo2" width="250">
</p>

The issue occurs when a reorder animation is interrupted by starting a
new drag operation. The interrupted animation would reset to the
starting position of the original animation rather than capturing the
current animated position, causing a visual jump.

## Solution

This PR fixes the issue by:
1. Storing the previous target offset before updating to a new target
2. When an animation is interrupted, calculating the actual current
position based on the animation's progress
3. Using this calculated position as the new starting point for the next
animation

<p align="center">
<img
src="https://github.com/user-attachments/assets/c24e4834-1c6b-41c1-8f44-17b4c79e0993"
alt="demo2" width="250">
</p>

This PR is part of a series of `ReorderableList` enhancements I've
developed for [TimeFinder](https://timefinder.app):
- #172740
- #172380
- #172739
- #172738

Fixes #173243

## Code Changes

```dart
// Before
_startOffset = offset;

// After  
final double currentAnimValue = Curves.easeInOut.transform(_offsetAnimation\!.value);
final Offset currentPosition = Offset.lerp(_startOffset, previousTarget, currentAnimValue)\!;
_startOffset = currentPosition;
```

This ensures smooth transitions without visual jumping, making rapid
reordering gestures feel more responsive and natural.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [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 [migration
guide] as needed.
- [x] All existing and new tests are passing.
- [x] The analyzer (`flutter analyze --flutter-repo`) does not report
any problems on my PR.
- [x] I am willing to follow-up on review comments in a timely manner.

[Contributor Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[test-exempt]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[migration guide]:
https://github.com/flutter/flutter/blob/master/docs/contributing/Tree-hygiene.md#create-a-migration-guide
2025-11-05 00:20:33 +00:00
Hannah Jin
ed19f47bec
Add blockAccessibilityFocus flag (#175551)
Add a new flag for a11y focusable

- Accessibility focus, which is the focus used by screen readers like
TalkBack and VoiceOver, is different from input focus.
- Our current logic use some existing flags to decide if a node is
accessibilty focusable. like "if it's a slider / has a check state / has
keyboard focus/..., then it's a11y focusable"
ecbb115ae3/engine/src/flutter/shell/platform/android/io/flutter/view/AccessibilityBridge.java (L98)
- but we lack the ability to explicitly set a node to be unfocusable in
a11y!
- This flag can be used to explicitly set some semantics nodes to be
unfocusable in a11y mode. if it is false, we fall back to the logic "if
it's a slider / has a check state / has keyboard focus/..., then it's
a11y focusable"

future use case 1:
user can set live region to be not focusable, so when content changes,
it will still announce, but the content can't be focused by swiping.
future use case 2:
when pushing a new route like a dialog, setting the semantics nodes in
old pages to be un focusable.




## Pre-launch Checklist

- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [ ] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [ ] 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 `///`).
- [ ] 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
[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
2025-11-03 22:18:33 +00:00
Ahmed Mohamed Sameh
43f7a1ea1b
Make sure that a SnackBarAction doesn't crash in 0x0 environment (#177899)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the SnackBarAction
widget.
2025-11-03 21:30:23 +00:00
Ahmed Mohamed Sameh
77920e15d7
Make sure that a SelectionArea doesn't crash in 0x0 environment (#177876)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the SelectionArea
widget.
2025-11-03 21:30:22 +00:00
Ahmed Mohamed Sameh
4d10e0c169
Make sure that GridTile doesn't crash in 0x0 environment (#175321)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the GridTile widget.

---------

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 19:44:08 +00:00
Ahmed Mohamed Sameh
0908c2e225
Make sure that a Slider doesn't crash in 0x0 environment (#177882)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the Slider widget.
2025-11-03 19:42:15 +00:00
Ahmed Mohamed Sameh
8e567b884d
Make sure that a CheckedPopupMenuItem doesn't crash in 0x0 environment (#177545)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
CheckedPopupMenuItem widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 18:08:25 +00:00
Ahmed Mohamed Sameh
f07d882efb
Make sure that a PopupMenuItem doesn't crash in 0x0 environment (#177533)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the PopupMenuItem
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 06:40:30 +00:00
Ahmed Mohamed Sameh
50d03ed339
Make sure that a RefreshProgressIndicator doesn't crash in 0x0 enviro… (#177556)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
RefreshProgressIndicator widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 06:36:25 +00:00
Ahmed Mohamed Sameh
902a697692
Make sure that a PopupMenuButton doesn't crash in 0x0 environment (#177493)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the PopupMenuButton
widget.

---------

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 01:25:24 +00:00
Ahmed Mohamed Sameh
4499cf6e89
Make sure that a CircularProgressIndicator doesn't crash in 0x0 envir… (#177555)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
CircularProgressIndicator widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-03 01:21:38 +00:00
Ahmed Mohamed Sameh
518722ab1a
Make sure that a Radio doesn't crash in 0x0 environment (#177580)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the Radio widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 22:18:03 +00:00
Ahmed Mohamed Sameh
f311a23424
Make sure that a RadioListTile doesn't crash in 0x0 environment (#177576)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the RadioListTile
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:40:50 +00:00
Ahmed Mohamed Sameh
9c056ed84e
Make sure that an ExpandIcon doesn't crash in 0x0 envrionment (#175042)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the ExpandIcon
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:39:35 +00:00
Ahmed Mohamed Sameh
ab479438cf
Make sure that a RangeSlider doesn't crash in 0x0 environment (#177642)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the RangeSlider
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:25:57 +00:00
Ahmed Mohamed Sameh
b0f5cda78e
Make sure that a GridTileBar doesn't crash in 0x0 environment (#177546)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the GridTileBar
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:25:57 +00:00
Ahmed Mohamed Sameh
647ce0c00a
Make sure that a LinearProgressIndicator doesn't crash in 0x0 environ… (#177553)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
LinearProgressIndicator widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:25:56 +00:00
Ahmed Mohamed Sameh
6a3011b4e1
Make sure that a PopupMenuDivider doesn't crash in 0x0 environment (#177445)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the PopupMenuDivider
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:05:34 +00:00
Ahmed Mohamed Sameh
71ac4b2fdb
Make sure that a PaginatedDataTable doesn't crash in 0x0 environment (#177389)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the
PaginatedDataTable widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:04:03 +00:00
Ahmed Mohamed Sameh
a52e28e0cd
Make sure that an OutlinedButton doesn't crash in 0x0 environment (#177340)
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the OutlinedButton
widget.

Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-11-02 20:01:55 +00:00