84394 Commits

Author SHA1 Message Date
chunhtai
3c28bb7a24
Removes elevation and thickness from semantics r2 (#169382)
<!--
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
-->

same as https://github.com/flutter/flutter/pull/168703, but previous pr
seems bugged github

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

<!-- 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-05-30 21:57:30 +00:00
Jonah Williams
6dd8814489
[Impeller] disable vivante from using impeller gles/vulkan. (#169760)
Fixes https://github.com/flutter/flutter/issues/167850
2025-05-30 21:52:42 +00:00
John "codefu" McDole
19460811e2
feat: experimental tool tests workflow (attempt 2) (#169768)
- remote repo: set upstream and get tags (flutter tool reqs)
 - pull request to flutter: checkout the PR, not the merge commit
 - local runs: update utils.dart to safely call terminal width

Now `act -W .github/workflows/tool-test-general.yml` works locally on
the command line.

Future improvements:
- Offer another way to set the "version" rather than tags; this causes a
longer checkout time.
- Multi-proc the tests and use as many cores as possible?
- Solve for packages downloading?

3.5 minutes isn't terrible.
2025-05-30 21:39:02 +00:00
Jonah Williams
291a689a10
[Impeller] document reverse-y requirement for ImageFilter.shader (#169761)
Otherwise things are upside down.
2025-05-30 21:14:51 +00:00
Matan Lurey
11bf180af0
Remove legacy platforms in .ci.yaml with 0 usages. (#169783) 2025-05-30 21:05:18 +00:00
gaaclarke
3d8fa621c1
[Reland3] Implements UISceneDelegate dynamically w/ FlutterLaunchEngine (#169276) (#169365)
## **BREAKING CHANGE**

Adopting Apple's UISceneDelegate protocol shifts the initialization
order of apps. For the common cases we've made sure they will work
without change. The one case that will require a change is any app that
in `-[UIApplicateDelegate didFinishLaunchingWithOptions:]` assumes that
`UIApplicationDelegate.window.rootViewController` is a
`FlutterViewController` instance. Users should follow the [migration
guide](https://docs.google.com/document/d/16WsqYbANmhupw-gxGPQPZ9B3yz1YBIviS-N1UyIQNSE/edit?tab=t.0#heading=h.txry2otwqko3)
to update that usage.

## Changes since revert
It's been rebased onto the FlutterPluginRegistrant PR which was used for
migration. The dynamic selection of the UISceneDelegate has been
removed, instead there is a flutter tool migration to the Info.plist.

## Description
fixes: https://github.com/flutter/flutter/issues/167267

design doc:


https://docs.google.com/document/d/1ZfcQOs-UKRa9jsFG84-MTFeibZTLKCvPQLxF2eskx44/edit?tab=t.0

relands https://github.com/flutter/flutter/pull/168396 
relands https://github.com/flutter/flutter/pull/168914
relands https://github.com/flutter/flutter/pull/169276

## 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-05-30 20:57:40 +00:00
engine-flutter-autoroll
40f1695bef
Roll Skia from f34be67e8a6b to 815ec432f549 (14 revisions) (#169779)
https://skia.googlesource.com/skia.git/+log/f34be67e8a6b..815ec432f549

2025-05-30 bungeman@google.com [gn] Allow libpng and rust png to build
together
2025-05-30 michaelludwig@google.com [graphite] Fix unclamped matrix
color filters with negative values
2025-05-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from d3140371858b to af59becc8906 (3 revisions)
2025-05-30 mike@reedtribe.org Temp work-around for graphite-dawn-mali
crasher
2025-05-30 michaelludwig@google.com [graphite] Use float for colorspace
xform parameters
2025-05-30 mike@reedtribe.org Use SkSpan in the public API
2025-05-30
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-30 kjlubick@google.com Reland "[rust png] Make
`SkTypeface_fontations.cpp` agnostic to PNG decoder"
2025-05-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from d2a2ceb52656 to d3140371858b (9 revisions)
2025-05-30 kjlubick@google.com Make CodeSize.+NoPatch ignore symlinks
that don't exist
2025-05-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from e7118451f513 to 20b08f95e5b3 (9 revisions)
2025-05-30 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from f53bc591dafd to 91043600f711 (25 revisions)
2025-05-29 sam@gentoo.org skcms: support two attributes with GCC
2025-05-29 robertphillips@google.com [graphite] Add Precompile
RE_LinearEffect PaintOptions

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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-30 20:01:13 +00:00
Jason Simmons
d8baa77b38
Revert "fix: update experiment to use different setup (#169728)" and "feat: experimental workflow for Linux tool-tests-general (#169706)" (#169770)
The Linux_tool-tests-general check is causing errors on PRs such as
Dart->engine rolls (example:
https://github.com/flutter/flutter/pull/169763)
2025-05-30 18:10:53 +00:00
Matan Lurey
088d1bd62a
Switch to Linux orchestrators for Windows releasers. (#168941)
Towards https://github.com/flutter/flutter/issues/168934.

/cc @reidbaker as release engineer

/cc @zanderso (we talked about this offline)
2025-05-30 16:52:23 +00:00
Jason Simmons
0b02682934
Roll expat to 8e49998f (#169707)
This matches the version currently used by Skia.

Fixes https://github.com/flutter/flutter/issues/169620
2025-05-30 16:31:13 +00:00
stuartmorgan-g
8132e18285
Remove discontinued packages from issue template (#169666)
These six packages have been discontinued:
https://github.com/flutter/flutter/issues/162960
2025-05-30 10:35:39 +00:00
Matan Lurey
92879427fc
Update Experimental-Branch.md (#169721)
It's no longer a "bit of a hack", it's just a permanent hack ;)

(We look for branches with recent commits instead)
2025-05-30 04:26:24 +00:00
John "codefu" McDole
351718d10b
fix: update experiment to use different setup (#169728)
Use android-actions/setup-android even if its more verbose.
2025-05-30 03:08:34 +00:00
engine-flutter-autoroll
3b87537bbe
Roll Fuchsia Linux SDK from WvRLeTv2ocKsPOdrq... to 0CZI-EGv7NDSolQsj... (#169717)
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 codefu@google.com,zra@google.com 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
2025-05-30 01:22:36 +00:00
John "codefu" McDole
033b32123f
feat: experimental workflow for Linux tool-tests-general (#169706)
Demonstrates running Linux tool-tests-general running on workflows.

Can be run locally using ACT: `gh act --workflows
".github/workflows/tool-test-general.yml" --secret-file "" --var-file ""
--input-file "" --eventpath ""` - except this works only in VSCode since
tty isn't attached.
2025-05-30 00:16:48 +00:00
engine-flutter-autoroll
e8706558cd
Roll Skia from 191ef95dbe54 to f34be67e8a6b (3 revisions) (#169697)
https://skia.googlesource.com/skia.git/+log/191ef95dbe54..f34be67e8a6b

2025-05-29
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-29 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 58febb14bdad to d2a2ceb52656 (4 revisions)
2025-05-29 kjlubick@google.com Make PDF and XPS devices provide a CPU
recorder

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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-30 00:13:55 +00:00
Justin McCandless
1677233f4c
Don't show SystemContextMenu for SelectableText (#169238)
Goes back to using the Flutter-drawn context menu for SelectableText.
Currently, SystemContextMenu requires an active text input connection to
work. This snuck in because SelectableText is based on EditableText.

Fixes https://github.com/flutter/flutter/issues/169001
2025-05-30 00:13:53 +00:00
LouiseHsu
538cf22b63
Add missing localization generation for widgets (#169695)
Adds missing localization generation for widget translations
I ran into this issue when I was trying to generate files for
https://github.com/flutter/flutter/pull/169150/files, and found out the
files were being generated for cupertino and material but not widgets.

## 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-05-30 00:10:04 +00:00
Justin McCandless
4cc47e8d52
IOSSystemContextMenuItem.toString to Diagnosticable (#169705)
The IOSSystemContextMenuItem should mixin Diagnosticable instead of
overriding toString.

Fixes https://github.com/flutter/flutter/issues/169696
2025-05-30 00:10:02 +00:00
Jackson Gardner
27787515e9
Merge changelog from 3.32.1. (#169713)
This just updates the changelog from the 3.32.1 stable hotfix release.
2025-05-30 00:10:01 +00:00
Matan Lurey
cfd7c9cbfa
Mark Linux web_tool_tests as bringup due to being 10%+ flaky (#169716)
See https://github.com/flutter/flutter/issues/169574.
2025-05-29 23:31:00 +00:00
Jonah Williams
7e99b7f8b3
[Impeller] let drawImage nine use porter duff optimization. (#169611)
Fixes https://github.com/flutter/flutter/issues/169492

Currently we apply a color filter nine times for the drawImageNine
calls, which is very expensive. We can do the same porterduff
optimization we did for flame for drawImage nine by allowing the porter
duff shader to specify a strict src rect.

### Before


![flutter_04](https://github.com/user-attachments/assets/006c89ad-14a6-4387-9bfb-f6be357f43d6)

### After


![flutter_03](https://github.com/user-attachments/assets/e058d86e-7f1a-4708-bb40-8746bb9199e4)
2025-05-29 22:08:29 +00:00
Matan Lurey
b6b1ae52ab
Better null-safe implementation of AssetTransformerEntry. (#169645)
Some small cleanups I had stashed while looking at
https://github.com/flutter/flutter/issues/168629.
2025-05-29 21:53:36 +00:00
Justin McCandless
e315c070c8
Clean up references to deprecated onPop method in docs (#169700)
onPop is deprecated but was mentioned in the docs. I've put its
replacement onPopWithResult in its place. Also, there was one
unterminated square bracket that I've fixed.
2025-05-29 21:50:20 +00:00
Loïc Sharma
279f19161f
Let tests mock the list of feature flags (#169140)
This moves the tool's `allFeatures` global to
`FeatureFlags.allFeatures`.

In the future, this will be used by tests to mock the list of feature
flags and replace them with test flags in various states. See:
https://github.com/flutter/flutter/pull/168437

Part of: https://github.com/flutter/flutter/issues/167668

## 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
2025-05-29 20:40:34 +00:00
fewling
f182421dd2
Add header and footer support to NavigationDrawer (#168005)
<!--
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
-->
## Description

This PR attempts to add header and footer for `NavigationDrawer` widget
as shown below:

![sample](https://github.com/user-attachments/assets/f3adefe9-7c4e-4169-a72b-d5beffc7b73a)

## Issues are fixed by this PR

- #127621 
- #135750 (partially)

## 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
2025-05-29 20:33:26 +00:00
Kishan Rathore
df29894372
Feat: Add opaque, isActive, isFirst, popDisposition aspects for ModalRoute (#167324)
Feat: Add opaque, isActive, isFirst, popDisposition aspects for
ModalRoute
fixes: #167058 
fixes: #162009 

## 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-05-29 20:03:21 +00:00
Chinmay Garde
09c7f4fa5b
[Impeller] libImpeller: Allow setting ellipses. (#169610)
Fixes https://github.com/flutter/flutter/issues/168750

<img width="1136" alt="Screenshot 2025-05-28 at 11 41 24 AM"
src="https://github.com/user-attachments/assets/d421783b-9e04-46e1-aa0c-236c3f546e11"
/>
2025-05-29 19:39:20 +00:00
engine-flutter-autoroll
ed68dd8c22
Roll Skia from 58f43e55f1ba to 191ef95dbe54 (8 revisions) (#169686)
https://skia.googlesource.com/skia.git/+log/58f43e55f1ba..191ef95dbe54

2025-05-29 lukasza@chromium.org Reland "[rust png] Round-trip
`kOpaque_SkAlphaType` when encoding".
2025-05-29 kjlubick@google.com Revert "[rust png] Make
`SkTypeface_fontations.cpp` agnostic to PNG decoder"
2025-05-29 kjlubick@google.com Make Bazel boilerplate presubmit platform
dependent
2025-05-29 mike@reedtribe.org Remove pathops dependency
2025-05-29 mike@reedtribe.org More uses for DirectBlit
2025-05-29 lehoangquyen@chromium.org graphite: Add internalMSAATileSize
option to ContextOptions
2025-05-29 bungeman@google.com [pdf] Artifact types and subtypes are
names
2025-05-29 kjlubick@google.com [rust png] Make
`SkTypeface_fontations.cpp` agnostic to PNG decoder

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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-29 19:23:20 +00:00
Nicholas Shahan
422d8d2dad
[tests] Increase linux timeout and skip on others (#169627)
With this change the web.shard test suite runs all existing tests on all
platforms with the version of the web debug builds that is the flutter
tools default (does not support stateful hot reload).

The linux bot configuration will also run some of the tests using the
new web debug build (supports stateful hot reload). The timeout has been
increased for this configuration to allow the additional tests to run to
completion.

The mac and windows configurations skip all tests for the new web debug
builds.

In the future the new build output will become the flutter tools default
and the balance of where the tests tests are run will flip until the
ability to opt out of the new build output is removed.

This change is not ideal because we are still not fully testing all
features with the two versions of the web debug builds that are
available to users. If given the opportunity we should add additional
bot configurations to run all the tests with the output that supports
stateful hot reload.

Fixes: https://github.com/flutter/flutter/issues/169304
Issue: https://github.com/flutter/flutter/issues/169634
2025-05-29 19:00:57 +00:00
Victoria Ashworth
fe1c9d61a7
Validate build configuration during Xcode build phase (#169395)
You can run iOS/macOS Flutter apps through either the Flutter CLI or
Xcode. However, it's often required to first run the Flutter CLI to
generate required files and settings. Some of these settings/files (like
dev dependencies) are specific to the build mode. However, you can
change the build mode through Xcode too. When you change the build mode
through Xcode, the Flutter-generated files and setting may not be
correct.

This PR checks if the current build mode matches the one last used by
the Flutter CLI. If it doesn't, it'll print a warning like this:

![Screenshot 2025-05-23 at 5 14
58 PM](https://github.com/user-attachments/assets/47d15cc4-f05d-4034-8be6-67f37828aa61)

If the build action is `install`, which indicates the app is being built
for distribution, this will print as an error and fail the build:

![Screenshot 2025-05-23 at 5 16
12 PM](https://github.com/user-attachments/assets/339b65bd-6425-4595-b26b-a60c722bbcf9)


## 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.
- [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
2025-05-29 19:00:56 +00:00
René Kilczan
ae11f77f20
Fix the "Missing ExternalProject for :" error (#168403)
Fix the "Missing ExternalProject for :" error

This fixes #168296

## 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
2025-05-29 17:51:19 +00:00
Kevin Moore
a7bab0fe86
[web] Pass the same optimization level to both stages of JS compiler (#169642)
Ensures that late variables names are cleaned up

Fixes https://github.com/flutter/flutter/issues/134423
2025-05-29 17:35:29 +00:00
Renzo Olivares
c6fe412e9a
Re-enable SelectableRegion web tests (#169541)
This change re-enables some `SelectableRegion` tests now that
https://github.com/flutter/flutter/issues/125582 has been closed.

## 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-05-29 17:30:32 +00:00
Gray Mackall
0d349d7843
[reland] Make build_android_host_app_with_module_aar build using an aar (#169311)
Relands https://github.com/flutter/flutter/pull/169171. I needed to copy
the configuration from the FGP that respects the `engine.realm` file if
it exists.

Link to passing run on last commit, when using a local engine:
https://ci.chromium.org/ui/p/flutter/builders/try/Linux%20build_android_host_app_with_module_aar/8596/overview

Link to failure before the fix: 

https://ci.chromium.org/ui/p/flutter/builders/try/Linux%20build_android_host_app_with_module_aar/8505/overview

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

---------

Co-authored-by: Gray Mackall <mackall@google.com>
2025-05-29 17:06:51 +00:00
engine-flutter-autoroll
2a821a70de
Roll Packages from 5743798ede97 to 44630668aec6 (5 revisions) (#169674)
5743798ede...44630668ae

2025-05-29 15619084+vashworth@users.noreply.github.com Allow tests to
use macOS 14 or 15.5 (flutter/packages#9328)
2025-05-29 sokolovskyi.konstantin@gmail.com [camera_web] Remove mocktail
dependency. (flutter/packages#9195)
2025-05-28 engine-flutter-autoroll@skia.org Roll Flutter from
4372bfbc6c23 to 0e536eb9fe4b (27 revisions) (flutter/packages#9334)
2025-05-28 robert.odrowaz@leancode.pl [camera_avfoundation]
Implementation swift migration - part 3.5 (flutter/packages#9254)
2025-05-28 15619084+vashworth@users.noreply.github.com
[webview_flutter_wkwebview] Fix `testNilRequest` test for macOS 15.5
(flutter/packages#9330)

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-flutter-autoroll
Please CC flutter-ecosystem@google.com 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
2025-05-29 16:41:49 +00:00
Ben Konyi
f582fcbb04
Roll customer_testing to 7f55026290e721fc648d3811664bbf3abca911d5 (#169671) 2025-05-29 15:53:08 +00:00
engine-flutter-autoroll
fdc8c20d0d
Roll Skia from 274d78ef2666 to 58f43e55f1ba (1 revision) (#169669)
https://skia.googlesource.com/skia.git/+log/274d78ef2666..58f43e55f1ba

2025-05-29 ccameron@chromium.org skcms_TFType: Add default to switch
statements

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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-29 14:56:57 +00:00
Jason Simmons
8abf4e7a54
[Impeller] Maintain a global map of each context's currently active thread-local command pools (#169548)
The Impeller Vulkan back end creates a thread-local map of contexts to
CommandPoolVK instances for each thread that uses Vulkan. This allows a
thread to obtain the CommandPoolVK that is currently in use for a given
context.

When a context is shut down, the Vulkan resources used by each thread's
local CommandPoolVK for that context must be freed. To do this,
CommandPoolVK maintains a global map of CommandPoolVK instances.

Prior to this PR Impeller was appending to the context's pool list in
the global map each time a new CommandPoolVK was created. In the
original implementation this worked because Impeller was only creating
one CommandPoolVK per thread for a given context.

However, CommandPoolVK later adopted a recycling scheme where each frame
creates a new CommandPoolVK instance that acquires a Vulkan command pool
from the CommandPoolRecyclerVK. So inserting every CommandPoolVK into
the global map will cause the global map to grow unbounded.

This PR changes the structure of the global map. The global map will now
associate each context with a map of thread IDs to the CommandPoolVK
that is currently placed in the thread's local storage. When a thread
calls CommandPoolRecyclerVK::Dispose to clear its thread-local
CommandPoolVK for a context, the corresponding entry is also removed
from the global map.

Fixes https://github.com/flutter/flutter/issues/169208
2025-05-29 14:27:10 +00:00
stuartmorgan-g
5df6008ec7
Update triage for new team-devexp (#169668)
Adds the new `team-devexp` to the flowchart, and updates references to
`d: devtools` to reflect that it's now `a: devtools`.
2025-05-29 14:27:06 +00:00
Mouad Debbar
8b18dde77f
Reduce some CI timeouts (#169512)
- `Linux docs_test`: Has been running consistently under 25m, while
timeout was set at 90m.
- `Linux coverage`: Has been running consistently under 1.2h (~75m),
while timeout was set at 120m.
2025-05-29 13:35:15 +00:00
engine-flutter-autoroll
9c89a8fff9
Roll Skia from cc7963935d9d to 274d78ef2666 (21 revisions) (#169665)
https://skia.googlesource.com/skia.git/+log/cc7963935d9d..274d78ef2666

2025-05-29
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-29 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from 2a18fdbf4c8c to e7118451f513 (18 revisions)
2025-05-29 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 8888289eb6d9 to 58febb14bdad (6 revisions)
2025-05-29 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from 0dc9ec06d441 to f53bc591dafd (28 revisions)
2025-05-29 syoussefi@google.com [vulkan] Switch to VK_EXT_debug_utils
2025-05-29
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-28
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-28
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-28 danieldilan@google.com Add bounds check to onDrawPoints for
ganesh Device
2025-05-28 bungeman@google.com [gn] Remove msvc env setting
2025-05-28 michaelludwig@google.com [graphite] Separate HSL and regular
color matrix filter shaders
2025-05-28 kainino@chromium.org [graphite] Handle Dawn breaking change
in QueueWorkDoneCallback
2025-05-28
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-28 kjlubick@google.com Rename SkRecorder::Type::kRaster -> kCPU
2025-05-28 thomsmit@google.com [graphite] Add test for static vertices
padding.
2025-05-28 lukasza@google.com Revert "[rust png] Round-trip
`kOpaque_SkAlphaType` when encoding."
2025-05-28
recipe-mega-autoroller@chops-service-accounts.iam.gserviceaccount.com
Roll recipe dependencies (trivial).
2025-05-28 syoussefi@google.com [graphite][vulkan] Prepare for more
extensive property queries
2025-05-28 skia-autoroll@skia-public.iam.gserviceaccount.com Roll
vulkan-deps from 9b8253ba5637 to 8888289eb6d9 (8 revisions)
2025-05-28 kjlubick@google.com Fix integer overflow in SkSL RP code
2025-05-28 lukasza@chromium.org [rust png] Round-trip
`kOpaque_SkAlphaType` when encoding.

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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-29 12:39:26 +00:00
Kevin Moore
f2625754b3
Fix minify logic (#169607)
It's meant to be ignored unless explicitly set.

Introduced in
cb3150f998
2025-05-28 23:52:39 +00:00
Nate Biggs
f5f9f351f0
Add dynamic module loader to flutter wasm entrypoint script. (#169313)
Adds support for loading dynamic module files to the Flutter wasm
entrypoint script. The Dart SDK already tries to import this function
when dynamic modules are enabled.

## 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.
- [ ] 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: Nate Biggs <natebiggs@google.com>
2025-05-28 21:47:17 +00:00
Sam Rawlins
1ce59f419d
integration_tests: Check if BuildContext is mounted in display_cutout_test (#169008)
These changes highlight where code was not safely checking whether the
BuildContext was mounted before using it.

The `use_build_context_synchronously` lint rule is changing to catch
these cases.

## 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].
- [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-05-28 21:46:19 +00:00
Chinmay Garde
2180d9fe80
[Impeller] Update FAQ for WebGPU/Dawn. (#169616)
From the thread on the insiders channel.
2025-05-28 21:36:28 +00:00
Jonah Williams
af3627ac2b
[Impeller] acquire the gpu sync switch when flush stored GPU tasks. (#169596)
Potential fix for https://github.com/flutter/flutter/issues/166668

See:

*
https://github.com/flutter/flutter/blob/master/engine/src/flutter/impeller/renderer/backend/metal/context_mtl.mm#L429
*
5d013c73ba/engine/src/flutter/fml/synchronization/sync_switch.cc (L41)

We don't hold the sync switch lock when we flush tasks. So if we start
flushing then immediately go to the background, then we might execute
while backgrounded.
2025-05-28 21:28:17 +00:00
engine-flutter-autoroll
3e8b531b18
Roll Fuchsia Linux SDK from nC9hLWjYVlChDTEPh... to WvRLeTv2ocKsPOdrq... (#169604)
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 codefu@google.com,zra@google.com 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
2025-05-28 20:15:10 +00:00
engine-flutter-autoroll
c492ad41a3
Roll Skia from 82d326fc2148 to cc7963935d9d (1 revision) (#169597)
https://skia.googlesource.com/skia.git/+log/82d326fc2148..cc7963935d9d

2025-05-28
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 codefu@google.com,kjlubick@google.com,nicolettep@google.com 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
2025-05-28 20:15:10 +00:00
Matan Lurey
8e8cb92553
Roll forward: "Initialize default-app-flavor" (#169298) (#169602)
Closes https://github.com/flutter/flutter/issues/169598 (which explains
the integration test failure).
Closes https://github.com/flutter/flutter/issues/169160.
Closes https://github.com/flutter/flutter/issues/165803.

This is the only diff from 5d013c73baa70a8b3e1c541cb63e4c22654aa3cc:
```diff
diff --git a/packages/flutter_tools/lib/src/build_system/targets/common.dart b/packages/flutter_tools/lib/src/build_system/targets/common.dart
index 61583210e47..67731019a05 100644
--- a/packages/flutter_tools/lib/src/build_system/targets/common.dart
+++ b/packages/flutter_tools/lib/src/build_system/targets/common.dart
@@ -308,10 +308,18 @@ class KernelSnapshot extends Target {
     if (flavor == null) {
       return;
     }
-    if (!dartDefines.any((String element) => element.startsWith(kAppFlavor))) {
-      // If the flavor is not already in the dart defines, add it.
-      dartDefines.add('$kAppFlavor=$flavor');
-    }
+
+    // It is possible there is a flavor already in dartDefines, from another
+    // part of the build process, but this should take precedence as it happens
+    // last (xcodebuild execution).
+    //
+    // See https://github.com/flutter/flutter/issues/169598.
+
+    // If the flavor is already in the dart defines, remove it.
+    dartDefines.removeWhere((String define) => define.startsWith(kAppFlavor));
+
+    // Then, add it to the end.
+    dartDefines.add('$kAppFlavor=$flavor');
   }
 }
 ```
2025-05-28 20:15:01 +00:00