Skip to content

Conversation

@huycozy
Copy link
Member

@huycozy huycozy commented Jul 10, 2025

@override
void didChangeDependencies() {
super.didChangeDependencies();
assert(debugCheckHasMaterial(context));
assert(debugCheckHasMaterialLocalizations(context));
assert(debugCheckHasDirectionality(context));
_localizations = MaterialLocalizations.of(context);
_textDirection = Directionality.of(context);

Demo
before after
before.mov
after.mov

Pre-launch Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@huycozy huycozy self-assigned this Jul 10, 2025
@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Jul 10, 2025
@dkwingsmt dkwingsmt self-requested a review July 10, 2025 23:25
Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

Awesome change! Thank you so much for the investigation.

@huycozy huycozy added the autosubmit Merge PR when tree becomes green via auto submit App label Jul 22, 2025
@auto-submit auto-submit bot added this pull request to the merge queue Jul 22, 2025
Merged via the queue into flutter:master with commit db38e71 Jul 22, 2025
72 of 73 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label Jul 22, 2025
@huycozy huycozy deleted the fix-PopupMenuButton-crash-in-pop-animation branch July 22, 2025 04:27
auto-submit bot pushed a commit to flutter/packages that referenced this pull request Jul 22, 2025
flutter/flutter@70cdc0c...ee0cc66

2025-07-22 [email protected] Licenses cpp ignore whitespace (flutter/flutter#172512)
2025-07-22 [email protected] feat: start using the content aware hash for downloading artifacts (flutter/flutter#172552)
2025-07-22 [email protected] fix: correct typo in analysis_options.yaml comment (disabeling -> disabling) (flutter/flutter#170206)
2025-07-22 [email protected] Hide `flutter assemble` unless `--verbose` (flutter/flutter#172508)
2025-07-22 [email protected] Fix PopupMenuButton crashes when being hidden immediately (flutter/flutter#171970)
2025-07-22 [email protected] Add hitTestChildren to baseline-aligned stack (flutter/flutter#172485)
2025-07-22 [email protected] Roll Skia from 4aba494b8108 to eea1c33fbe84 (11 revisions) (flutter/flutter#172515)
2025-07-22 [email protected] Replaces legacy licenses check with licenses_cpp (flutter/flutter#172486)
2025-07-22 [email protected] Omit `w` (widget tree), `t` (render tree) from `flutter run --profile` `h` (flutter/flutter#172506)
2025-07-22 [email protected] Refactor checks for `--machine` (flutter/flutter#172504)
2025-07-22 [email protected] feat(IconButton): add property to specify a states controller (flutter/flutter#169821)
2025-07-21 98614782+auto-submit[bot]@users.noreply.github.com Reverts "feat: start using the content aware hash for downloading artifacts (#171927)" (flutter/flutter#172505)
2025-07-21 [email protected] Render Flutter in its own EGL context (flutter/flutter#172330)
2025-07-21 [email protected] Feat: Add momentary varient of CupertinoSlidingSegmentedControl (flutter/flutter#164262)
2025-07-21 [email protected] Roll Packages from cb8fef6 to 9c85e5e (10 revisions) (flutter/flutter#172479)
2025-07-21 [email protected] Wrap `ShutdownHook` calls to avoid crashing the tool (flutter/flutter#171917)
2025-07-21 [email protected] fix: macOS Mojave Crash on Flutter Desktop Startup (flutter/flutter#172282)
2025-07-21 [email protected] Roll Skia from 9587301e33bc to 4aba494b8108 (41 revisions) (flutter/flutter#172471)
2025-07-21 [email protected] Add CLA note to tree hygiene (flutter/flutter#172475)
2025-07-21 [email protected] Add `radioInnerRadius` to `RadioListTile` (flutter/flutter#171851)
2025-07-21 [email protected] Use baseUri always when doing a hot reload or hot restart (flutter/flutter#172271)
2025-07-21 [email protected] feat: start using the content aware hash for downloading artifacts (flutter/flutter#171927)
2025-07-21 [email protected] Add support for `/?` to alias to `--help` (flutter/flutter#172328)
2025-07-21 [email protected] Upgrade flutter_lints in project template pubspec.yaml files (flutter/flutter#172400)
2025-07-21 [email protected] Use `$dartSdkVersion` when creating "dummy" pubspec for `create_api_docs` (flutter/flutter#172327)
2025-07-21 [email protected] Adds `(defaults to ___)` when using `flutter config --help` (flutter/flutter#172329)
2025-07-21 [email protected] Add a warning on usage of `dartPluginClass: 'none'`. (flutter/flutter#172315)
2025-07-21 [email protected] Skip [tool] crash reporting on `--local-engine` (flutter/flutter#172326)
2025-07-21 [email protected] Remove IDE validation from `flutter doctor` (flutter/flutter#171924)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
azatech pushed a commit to azatech/flutter that referenced this pull request Jul 28, 2025
…1970)

- Fix flutter#171422 (and maybe also
flutter#167180, and
flutter#163477)
- Investigation: Per discussion in
flutter#171422, the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:


https://github.com/flutter/flutter/blob/d6b2a952155f63e740290033944753162445a80d/packages/flutter/lib/src/material/calendar_date_picker.dart#L225-L232

<details open>
<summary>Demo</summary>

| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b"/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740"/>

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

<!-- 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 <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
vashworth pushed a commit to vashworth/packages that referenced this pull request Jul 30, 2025
…r#9662)

flutter/flutter@70cdc0c...ee0cc66

2025-07-22 [email protected] Licenses cpp ignore whitespace (flutter/flutter#172512)
2025-07-22 [email protected] feat: start using the content aware hash for downloading artifacts (flutter/flutter#172552)
2025-07-22 [email protected] fix: correct typo in analysis_options.yaml comment (disabeling -> disabling) (flutter/flutter#170206)
2025-07-22 [email protected] Hide `flutter assemble` unless `--verbose` (flutter/flutter#172508)
2025-07-22 [email protected] Fix PopupMenuButton crashes when being hidden immediately (flutter/flutter#171970)
2025-07-22 [email protected] Add hitTestChildren to baseline-aligned stack (flutter/flutter#172485)
2025-07-22 [email protected] Roll Skia from 4aba494b8108 to eea1c33fbe84 (11 revisions) (flutter/flutter#172515)
2025-07-22 [email protected] Replaces legacy licenses check with licenses_cpp (flutter/flutter#172486)
2025-07-22 [email protected] Omit `w` (widget tree), `t` (render tree) from `flutter run --profile` `h` (flutter/flutter#172506)
2025-07-22 [email protected] Refactor checks for `--machine` (flutter/flutter#172504)
2025-07-22 [email protected] feat(IconButton): add property to specify a states controller (flutter/flutter#169821)
2025-07-21 98614782+auto-submit[bot]@users.noreply.github.com Reverts "feat: start using the content aware hash for downloading artifacts (#171927)" (flutter/flutter#172505)
2025-07-21 [email protected] Render Flutter in its own EGL context (flutter/flutter#172330)
2025-07-21 [email protected] Feat: Add momentary varient of CupertinoSlidingSegmentedControl (flutter/flutter#164262)
2025-07-21 [email protected] Roll Packages from cb8fef6 to 9c85e5e (10 revisions) (flutter/flutter#172479)
2025-07-21 [email protected] Wrap `ShutdownHook` calls to avoid crashing the tool (flutter/flutter#171917)
2025-07-21 [email protected] fix: macOS Mojave Crash on Flutter Desktop Startup (flutter/flutter#172282)
2025-07-21 [email protected] Roll Skia from 9587301e33bc to 4aba494b8108 (41 revisions) (flutter/flutter#172471)
2025-07-21 [email protected] Add CLA note to tree hygiene (flutter/flutter#172475)
2025-07-21 [email protected] Add `radioInnerRadius` to `RadioListTile` (flutter/flutter#171851)
2025-07-21 [email protected] Use baseUri always when doing a hot reload or hot restart (flutter/flutter#172271)
2025-07-21 [email protected] feat: start using the content aware hash for downloading artifacts (flutter/flutter#171927)
2025-07-21 [email protected] Add support for `/?` to alias to `--help` (flutter/flutter#172328)
2025-07-21 [email protected] Upgrade flutter_lints in project template pubspec.yaml files (flutter/flutter#172400)
2025-07-21 [email protected] Use `$dartSdkVersion` when creating "dummy" pubspec for `create_api_docs` (flutter/flutter#172327)
2025-07-21 [email protected] Adds `(defaults to ___)` when using `flutter config --help` (flutter/flutter#172329)
2025-07-21 [email protected] Add a warning on usage of `dartPluginClass: 'none'`. (flutter/flutter#172315)
2025-07-21 [email protected] Skip [tool] crash reporting on `--local-engine` (flutter/flutter#172326)
2025-07-21 [email protected] Remove IDE validation from `flutter doctor` (flutter/flutter#171924)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC [email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
ksokolovskyi pushed a commit to ksokolovskyi/flutter that referenced this pull request Aug 19, 2025
…1970)

- Fix flutter#171422 (and maybe also
flutter#167180, and
flutter#163477)
- Investigation: Per discussion in
flutter#171422, the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:


https://github.com/flutter/flutter/blob/d6b2a952155f63e740290033944753162445a80d/packages/flutter/lib/src/material/calendar_date_picker.dart#L225-L232

<details open>
<summary>Demo</summary>

| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b"/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740"/>

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

<!-- 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 <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
mboetger pushed a commit to mboetger/flutter that referenced this pull request Sep 18, 2025
…1970)

- Fix flutter#171422 (and maybe also
flutter#167180, and
flutter#163477)
- Investigation: Per discussion in
flutter#171422, the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:


https://github.com/flutter/flutter/blob/d6b2a952155f63e740290033944753162445a80d/packages/flutter/lib/src/material/calendar_date_picker.dart#L225-L232

<details open>
<summary>Demo</summary>

| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b"/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740"/>

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

<!-- 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 <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
korca0220 pushed a commit to korca0220/flutter that referenced this pull request Sep 22, 2025
…1970)

- Fix flutter#171422 (and maybe also
flutter#167180, and
flutter#163477)
- Investigation: Per discussion in
flutter#171422, the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:


https://github.com/flutter/flutter/blob/d6b2a952155f63e740290033944753162445a80d/packages/flutter/lib/src/material/calendar_date_picker.dart#L225-L232

<details open>
<summary>Demo</summary>

| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b"/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740"/>

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

<!-- 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 <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
lucaantonelli pushed a commit to lucaantonelli/flutter that referenced this pull request Nov 21, 2025
…1970)

- Fix flutter#171422 (and maybe also
flutter#167180, and
flutter#163477)
- Investigation: Per discussion in
flutter#171422, the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:


https://github.com/flutter/flutter/blob/d6b2a952155f63e740290033944753162445a80d/packages/flutter/lib/src/material/calendar_date_picker.dart#L225-L232

<details open>
<summary>Demo</summary>

| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b"/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740"/>

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

<!-- 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 <[email protected]>
Co-authored-by: Tong Mu <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

PopupMenuButton broken in Flutter 3.32.5

2 participants