31179 Commits

Author SHA1 Message Date
Chinmay Garde
28317f04ef [Impeller] Commands that don't specify their own viewports get the viewport of the render pass.
Fixes https://github.com/flutter/flutter/issues/176945
2025-10-23 13:29:28 -07:00
chunhtai
a1ac766b4a
Android treats link without URL semantics node as button (#176959)
<!--
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
-->

fixes https://github.com/flutter/flutter/issues/172982

fixes it in the android side in case Android provide an API to denote
link without URL in the future


<!-- 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-10-22 16:42:17 +00:00
Jason Simmons
75004a639a
[Impeller] Add the paint color to the key of the text shadow cache (#177140)
Fixes https://github.com/flutter/flutter/issues/176146
2025-10-22 15:28:11 +00:00
Jason Simmons
280f34408f
Roll reclient to version 185 (#177293)
* The reclient bootstrap shutdown command now requires the config file
flag.
* The reproxystatus command must be run before stopping the reproxy in
order to access RBE metrics.
2025-10-22 14:10:32 +00:00
Mayank Patke
83382d1bb9
Remove references to dart:_js_annotations (#176698)
This library is now unused in Flutter and will shortly no longer build
with dart2wasm anyway.

cc @srujzs
2025-10-21 05:09:35 +00:00
LongCatIsLooong
894f27ef71
Make FlutterSceneLifeCycleProvider.sceneLifeCycleDelegate readonly (#177240)
And add documentation that says it should not change because the
delegate implementation is stateful.

## 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-10-20 23:14:09 +00:00
Jason Simmons
3f76120031
Move the Fuchsia SDK to //third_party/fuchsia-sdk (#177118)
The //third_party/fuchsia-sdk path is expected by the build scripts for
other packages in the Chromium tree such as Abseil.
2025-10-20 22:37:01 +00:00
AthulJoseph
02cad7ced7
Added support to pass in texture type while creating textures. (#175376)
Resolves part of #145027
2025-10-20 18:47:06 +00:00
Jason Simmons
c56b18f3a4
Roll Dart SDK from 2cd2106f2cef to 913c2ae1b367 (2 revisions) (#177258)
Includes an update for changes to the analyzer API.

https://dart.googlesource.com/sdk.git/+log/2cd2106f2cef..913c2ae1b367

2025-10-20 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.11.0-36.0.dev 2025-10-18
dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com Version
3.11.0-35.0.dev

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/dart-sdk-flutter
Please CC codefu@google.com,dart-vm-team@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

Co-authored-by: engine-flutter-autoroll <engine-flutter-autoroll@skia.org>
2025-10-20 18:01:12 +00:00
gaaclarke
ed2325708a
Added link to ClipRect from ImageFilter in the docstring (#177196)
fixes https://github.com/flutter/flutter/issues/177134

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-20 17:43:17 +00:00
Slava Egorov
2d3416713f
Cleanup create_updated_flutter_deps.py a bit (#177162)
Make the code for updating Dart dependencies easier to follow by
splitting the logic into helper functions, adding comments and
tweaking logic slightly.

Make it handle all *_git variables uniformly instead of
hardcoding specific ones.

Make it handle the case where *_git variable does not exist
without emitting incorrect result.

Add a unit test to make it simpler to check that script does
reasonable things for all different inputs.
2025-10-20 17:34:11 +00:00
Koji Wakamiya
4ea3451537
[ios][engine] Fix autofill context cleanup and view lifecycle management (#173598)
fix https://github.com/flutter/flutter/issues/145681

I created a PR based on the survey described in
[comment](https://github.com/flutter/flutter/issues/145681#issuecomment-3151444768).
The existing processing is not deleted, but the method to be executed is
moved. If `_autofillContext` is not empty, the timing of removing
`activeView` and `_inputHider` is delayed.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com>
2025-10-20 04:19:22 +00:00
Matt Boetger
8b7310e07f
Fix HEIF decoding (#176860)
Fixing two HEIF decoding issues on Android:

API 36: ImageDecoder has a known issue decoding HEIF images with certain
gain maps. Image won't load. The workaround is to use BitmapFactory
instead.

Pre-36: HEIF Flipping did not work.  Image is upside.

|  |Before | After |
|---|---|---|
| Api 36 | <img width="320" height="714"
alt="Screenshot_20251010_151132"
src="https://github.com/user-attachments/assets/c1f48e0e-def8-4d8e-9847-c2ca9dac16e4"
/> | <img width="320" height="714" alt="Screenshot_20251010_150551"
src="https://github.com/user-attachments/assets/f0df1d19-3a5d-4751-b529-1e062a0af48c"
/> |
| Pre Api 36 | <img width="320" height="714"
alt="Screenshot_20251010_150752"
src="https://github.com/user-attachments/assets/9291d76b-d383-49d5-b9d7-add8bbf33e59"
/> | <img width="320" height="714" alt="Screenshot_20251010_150703"
src="https://github.com/user-attachments/assets/814454dc-d97a-4baf-9a8c-d9b5fe6ac51e"
/> |

Fixes: #176407

## 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: Gray Mackall <mackall@google.com>
2025-10-18 22:01:25 +00:00
Mouad Debbar
f94a942186
[web] Self-cleaning service worker (#176834)
Introduce a self-cleaning service worker to replace the old one.

Previous attempts (https://github.com/flutter/flutter/pull/170918,
https://github.com/flutter/flutter/pull/173609) had (accidentally?)
disabled the loading of the service worker in `flutter.js`. This PR
preserves the logic for loading the service worker, and it prints a
deprecation warning.

Towards https://github.com/flutter/flutter/issues/156910
Closes https://github.com/flutter/flutter/issues/106225
2025-10-17 21:18:29 +00:00
Matthew Kosarek
4f334abe30
Fixing WindowManagerTest::DialogCanNeverBeFullscreen possibly hanging (#177179)
fixes https://github.com/flutter/flutter/issues/177172

I believe the issue is that the struct was not fully initialized (which
is usually not a problem, but can sometimes get garbage values and start
hanging). The solution is probably to initialize the struct. Let's see
if it fixes CI :)

## 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-10-17 20:33:23 +00:00
Hannah Jin
16ae36ce20
[web][a11y] Fix the semantics tree reconstruction logic when a subtree is reparented to another node. (#177069)
issue fix: https://github.com/flutter/flutter/issues/175180 
The bug was like this:
1.  a tree like 1--2--3--4
2. remove node 2 and reattach node 3 to 1, the tree is now 1--3--4, it's
correct on the framework side.
3. on the web side, the tree reconstruction logic is wrong and the tree
become 1---3, the node 4 is removed wrongly.


When a node is detached from the tree, but its children node is attached
to a new parent, we need to stop searching the subtree and stop removing
the reparented subtree!
So we need a DFS function that can skip subtree but wont stop the whole
searching.

## 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-10-17 20:04:57 +00:00
John "codefu" McDole
cbec6e9846
Mark windows_unopt test as flakey (#177173) 2025-10-17 15:57:53 +00:00
Jason Simmons
a14c7fe6af
Manual roll Dart to a4485e5ef821 (3.11.0-25.0.dev) (#177132)
Includes migration from dart/runtime/bin:dart_io_api to
common_embedder_dart_io
2025-10-17 01:37:10 +00:00
KiCheol Kim
4119c700ac
Fix crash when NSAttributedString is passed to insertText on macOS (#176329)
## Description

This PR fixes a crash in the macOS text input plugin that occurs when
`NSAttributedString` is passed to the `insertText:replacementRange:`
method instead of `NSString`.

### Root Cause

The `insertText:replacementRange:` method of `NSTextInputClient`
protocol can receive either `NSString` or `NSAttributedString`. The
previous implementation directly called `UTF8String` on the input
parameter without type checking. Since `NSAttributedString` doesn't
respond to the `UTF8String` selector, this caused a crash with the
error:

-[NSConcreteMutableAttributedString UTF8String]: unrecognized selector
sent to instance

### Changes Made
- Added type checking to determine if the input is `NSAttributedString`
- Extract the underlying `NSString` using `[string string]` before
calling `UTF8String`
- This follows the same pattern already implemented in the
`setMarkedText:selectedRange:replacementRange:` method in the same file

### Crash Stack Trace

Thread 0 Crashed: 0 CoreFoundation __exceptionPreprocess 1
libobjc.A.dylib objc_exception_throw 2 CoreFoundation
-[NSObject(NSObject) doesNotRecognizeSelector:] 3 FlutterMacOS
-[FlutterTextInputPlugin insertText:replacementRange:]
(FlutterTextInputPlugin.mm:784) 4 AppKit
-[NSTextInputContext(NSInputContext_WithCompletion)
insertText:replacementRange:completionHandler:]

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Kim Ki Cheol <kim.kicheol@sk.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-10-16 20:00:54 +00:00
Jason Simmons
bdc27ac952
Handle the new location of Perfetto in create_updated_flutter_deps.py (#177099)
Dart recently moved Perfetto to dart/third_party/perfetto/src (see
https://dart.googlesource.com/sdk/+/07c9599ead52a2eea7164552e9525e3860a3aed5)

This PR extends create_updated_flutter_deps to handle dependencies
placed in an "src" subdirectory within the directory named for the
package.

It also adds a mapping for packages hosted at android.googlesource.com.
(Perfetto no longer needs to be fetched from Flutter's mirror
repository)
2025-10-16 16:24:00 +00:00
Matthew Kosarek
fe409cfca4
Implement dialog windows for the win32 platform (#176309)
## What's new?
- Implemented `DialogWindowControllerWin32` for win32 dialogs 🚀
- Refactored and updated the Win32 embedder to support dialogs
- Updated the `multiple_windows` example to demonstrate both modal and
modeless dialogs
- Added integration tests for the dialog windows
- Added tests for dialogs in the embedder

## How to test?
1. Run the `multiple_windows` example application with a local engine
built from this pull request
2. Click the `Modeless Dialog` creation button on the main window
3. Open a regular window and click the `Modal Dialog` creation button
4. Note the behavior of modal and modeless dialogs

## 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-10-16 15:32:29 +00:00
Jason Simmons
17ba56aefc
Manual roll Skia to 2d9df7c70b6f (#177074) 2025-10-16 13:10:38 +00:00
Camille Simon
8ee908d342
[Android] Refactor ImageReaderSurfaceProducer restoration after app resumes (#175937)
Refactors `FlutterRenderer` callback on app resume to restore its
`ImageReaderSurfaceProducer`s to a public API that Flutter activities
and fragments can call themselves `onResume` to fix a memory leak caused
by a potentially infinite number of callbacks being created as new
instances of the `FlutterEngine` are created.

Fixes https://github.com/flutter/flutter/issues/173770. Directly follows
the @/jason-simmons recommendation in
https://github.com/flutter/flutter/issues/173770#issuecomment-3212243501.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-16 00:12:26 +00:00
Mouad Debbar
f0d69e2d9e
[web] Fix focus issues in newer versions of Chrome (#176938)
Deconstruct https://github.com/flutter/flutter/pull/170760 to land more
pieces of it.
2025-10-15 21:22:54 +00:00
Jason Simmons
879d0fbc44
Manual roll Skia to c501c727a007 (#177015)
Includes updates for the removal of SkApplyPerspectiveClip
2025-10-15 21:17:08 +00:00
auto-submit[bot]
77df97abd7
Reverts "Fix - TalkBack does not announce list information (#174374)" (#177062)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#174374
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: chingjun
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: This PR calls the constructor of
`AccessibilityNodeInfo.CollectionInfo`, which is added in API 30,
without the API version guard. It broke some internal tests that are
running on API 29 and below.
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: jwlilly
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {camsim99, ash2moon}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Updating AccessibilityBridge.java and AccessibilityBridgeTest.java to
include `AccessibilityNodeInfo.CollectionItemInfo` to get TalkBack to
announce item indexes for ListViews.

- Updated the logic for adding CollectionInfo to add when the
scrollChildren count is greater than 1. This is an attempt to exclude
something like a SingleChildScrollView from getting CollectionInfo
added. The only semantics info we can rely on from Android is the
hasImplicitScrolling and the number of scrollChildren.
- Added logic for adding the CollectionItemInfo to ListView children. It
first checks to see if the parent node qualifies for CollectionInfo and
then adds the CollectionItemInfo to the child view. The index values
come from the `childrenInTraversalOrder`. We aren't currently passing
the indexedSemantics into the SemanticsNode. Once those values are
available, this can be made more robust.

The following video includes the new changes with a ListView


https://github.com/user-attachments/assets/b9bf1b80-9f29-40e2-8f33-a08919554b7e


This video includes the logic with a SingleChildScrollView (no list
announcements as expected)


https://github.com/user-attachments/assets/8fe4dd24-cc5a-4a6b-b4b0-0f371fea20df

Fixes #168651 - This is a minimal fix. A full fix would be to pass the
indexedSemantics to the SemanticsNode in Android and build the list with
those values.

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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-10-15 18:11:19 +00:00
Robert Ancell
cb94cc0705
Implement Regular Windows for Linux (#176187) 2025-10-14 21:36:19 +00:00
John Lilly
56ce192dc6
Fix - TalkBack does not announce list information (#174374)
Updating AccessibilityBridge.java and AccessibilityBridgeTest.java to
include `AccessibilityNodeInfo.CollectionItemInfo` to get TalkBack to
announce item indexes for ListViews.

- Updated the logic for adding CollectionInfo to add when the
scrollChildren count is greater than 1. This is an attempt to exclude
something like a SingleChildScrollView from getting CollectionInfo
added. The only semantics info we can rely on from Android is the
hasImplicitScrolling and the number of scrollChildren.
- Added logic for adding the CollectionItemInfo to ListView children. It
first checks to see if the parent node qualifies for CollectionInfo and
then adds the CollectionItemInfo to the child view. The index values
come from the `childrenInTraversalOrder`. We aren't currently passing
the indexedSemantics into the SemanticsNode. Once those values are
available, this can be made more robust.

The following video includes the new changes with a ListView


https://github.com/user-attachments/assets/b9bf1b80-9f29-40e2-8f33-a08919554b7e


This video includes the logic with a SingleChildScrollView (no list
announcements as expected)


https://github.com/user-attachments/assets/8fe4dd24-cc5a-4a6b-b4b0-0f371fea20df

Fixes #168651 - This is a minimal fix. A full fix would be to pass the
indexedSemantics to the SemanticsNode in Android and build the list with
those values.

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

---------

Signed-off-by: jwlilly <lilly.john.w@gmail.com>
2025-10-14 17:31:56 +00:00
chunhtai
48d5d48b5d
iOS can set application locale before view controller is set (#176592)
<!--
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
-->

fixes https://github.com/flutter/flutter/issues/176478

## 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-10-14 16:21:22 +00:00
Jason Simmons
55712c460f
Roll ANGLE to a branch based on d9fa255a5c22 (#176747)
See https://github.com/flutter/flutter/issues/174665
2025-10-14 16:15:12 +00:00
gaaclarke
d04705c92f
impeller: allows access of float uniforms by name (#176728)
fixes https://github.com/flutter/flutter/issues/176417

This fixes the linked issue in so far as it is possible today. This opts
for the runtime lookup of bindings since it avoids all sort of messy
issues when dealing with codegen. This doesn't stop us from doing
codegen in the future.

This also adds tests for hot reload cases that would fail in the past,
like inserting new uniforms.

## Limitations
1) It doesn't handle component names like ".r" or ".x". This is possible
if we want.
1) It doesn't handle nested structs. This isn't possible with the
current shader metadata and may be a limitation with glsl?

## Features
1) Slots can be cached to amortize the cost of looking up the bindings
1) Works with hot reload (tested inserting a uniform before one accessed
by name)

## Followup work
I plan on filing the following issues:
1) Map postfixes like ".r" ".z" to offsets so a uniform can be "foo.z"
1) Support nested structs so a uniform name can be "foo.bar"
1) Support codegen for uniforms to get compile-time uniform name support

## Example
```dart
ShaderBuilder(
  assetKey: 'shaders/grayscale.frag',
  (context, shader, _) {
    Color color = Colors.red;
    shader.getUniformFloat('uColor', 0).set(color.r);
    shader.getUniformFloat('uColor', 1).set(color.g);
    shader.getUniformFloat('uColor', 2).set(color.b);
    return BackdropFilter(
      filter: ImageFilter.shader(shader),
      child: Container(
        color: Colors.transparent,
      ),
    );
  },
),
```

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-14 02:41:45 +00:00
Alexander Aprelev
0d8fcc81df
Roll dart sdk to 3.11.0-17.0.dev (#176947)
Changes since last roll
```
2d8e0359a76 (tag: 3.11.0-17.0.dev, origin/lkgr-dev) Version 3.11.0-17.0.dev
06be66b5b60 [cfe] Don't nest deferred prefix scopes
07c9599ead5 [vm] Tweak location of Perfetto protos
```

Includes build changes to accommodate perfetto move.
2025-10-14 00:08:09 +00:00
Jason Simmons
8e99f3e898
[web] Match the behavior of other platforms in Web Locale.toString if the country code is an empty string (#176862)
Fixes https://github.com/flutter/flutter/issues/176666
2025-10-13 23:04:48 +00:00
Jason Simmons
aed8fecfdd
Roll SwiftShader to 794b0cfce1d8 (#176806)
This is required to fix issues affecting the pending ANGLE roll and to
allow removal of the -Wno-deprecated-this-capture compiler flag.

See https://github.com/flutter/flutter/issues/174665
2025-10-13 14:42:26 +00:00
Rusino
cce24b8a9d
[WebParagraph] Support for more styles, placeholders, decorations, etc (#172853)
This is the second version of WebParagraph. It includes pretty much all
SkParagraph functionality except struts and justifications (eventually
they will be implemented, too).

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

---------

Co-authored-by: Mouad Debbar <mdebbar@google.com>
2025-10-10 16:38:29 +00:00
Gray Mackall
1969110cb6
[HCPP] Properly remove hcpp views that are no longer visible (#176742)
Fixes https://github.com/flutter/flutter/issues/175882.

This ended up being a very similar bug to
https://github.com/flutter/flutter/pull/173881, and in my understanding
comes from the same incorrect assumption. In old PV land these views
would stop displaying if we stopped sending updates to them. But in HCPP
the underlying implementation ends up using an Android SurfaceFlinger
which continues displaying what it was last told to. So again we have a
bug here were we aren't taking the new responsibility of clearing that
we need to. See
https://github.com/flutter/flutter/pull/173881#discussion_r2283287104

Other solutions would be to just always call hide on the set of (keys of
view_params which are not in composition order) on every frame (which
would avoid this mirroring of state), or to modify the jni here to pass
over one big bundle with all the information required to do all the
existing calls as well as determine which views need to be hidden. But
we are already doing this same mirroring of visibility state for the
overlay layer (see Hide/ShowOverlayLayerIfNeeded()), so I think it is
reasonable to take the same approach here.

This is sort of a follow up to
https://github.com/flutter/flutter/pull/162908 as well, this PR properly
removes the view when it is the last platform view, but does not fix the
case that this PR attempts to more generally fix where we go from 2->1
(or n->n-1 > 0) pvs.

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md

---------

Co-authored-by: Gray Mackall <mackall@google.com>
2025-10-10 07:00:11 +00:00
Robert Ancell
26499cf904
Change default Linux thread policy to merge platform and UI threads. (#176759)
This matches the other platforms who have already done this migration
(Android and iOS in 3.32, Windows and MacOS in 3.33).

Applications may opt-out of this change by setting the thread policy to
unmerged with:
```c
fl_dart_project_set_ui_thread_policy(project, FL_UI_THREAD_POLICY_RUN_ON_SEPARATE_THREAD);
```
in `linux/runner/my_application.cc`
2025-10-10 03:18:24 +00:00
Chinmay Garde
d64282028b
[Impeller] Fix broken links in README. (#176770)
Regression introduced in https://github.com/flutter/flutter/pull/175195
2025-10-09 20:07:12 +00:00
Chinmay Garde
9bc4416614
Fix links to Custom Flutter Engine Embedders in README. (#175807)
The wiki just redirects to the page in this same repo, so point to it
directly. The wiki also redirected to a 404 (which I've now fixed).
2025-10-09 20:07:12 +00:00
b-luk
597f07b268
Update engine setup docs. (#176750)
- Move "gclient bootstrap" out of engine/README.md into a section in the
"Setting up the Engine development environment" doc.
- In the "gclient bootstrap" section, instruct Googlers to follow the
RBE setup docs.
- Update the "Additional Steps for Web Engine" to reflect the fact that
the user's gclient file is copied from a template that contains a
commented-out web engine entry.
- Link to the "Engine Tool" docs instead of to "Compiling the engine"
for the next steps.
- In the RBE doc:
- Update the gclient instructions to reflect that the gclient file may
be copied from rbe.gclient.
- Move the "gcloud" section into the "Getting started" parent section.
The gcloud setup is required before any of the next steps.
- Instead of suggested the "gcloud auth application-default login"
command in case of an error, directly instruct the user to run this
command. It's required for things to work.
- Add a "Too many open files" section to the Troubleshooting parent
section.

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

*Replace this paragraph with a description of what this PR is changing
or adding, and why. Consider including before/after screenshots.*

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

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## Pre-launch Checklist

- [ ] 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-10-09 19:44:25 +00:00
John "codefu" McDole
1c6c6f4611
fix: build windows_arm artifacts for cah (#176723)
Adds target to merge queue, the only place that the CAH is used to
produce artifacts. Today this is built in post submit and only uploads
to the githash artifact.

This should not add these artifacts to release builders as the
`enabled_branches` is set to "master"

fixes #176603
2025-10-08 20:04:01 +00:00
Kostia Sokolovskyi
fc8f60345a
Add saturation ColorFilter. (#176464)
Closes https://github.com/flutter/flutter/issues/166589

This PR is a continuation of
https://github.com/flutter/flutter/pull/167898, which was closed due to
the lack of web implementation. Thanks to @lukepighetti and
@benthillerkus for their work on the closed PR.

### Description

- Adds `ColorFilter.saturation`



https://github.com/user-attachments/assets/67d8acf0-35d0-42de-a24b-f24eed14e9a8


## 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-10-08 19:13:02 +00:00
Slava Egorov
e11e2c1128
Configure FfiNative resolver on dart:io (#176621)
This is needed by file watching implementation after
dart-lang/sdk@ed6bab847b

Ideally we should actually move this whole code into `io_natives.{h,cc}`
on the Dart runtime side to avoid duplication.
2025-10-08 15:42:39 +00:00
Matt Boetger
3379c7f065
Keyboard Animation Fix (#176418)
Fixing Keyboard Animation Issue
Before:


https://github.com/user-attachments/assets/2b863ca1-20e3-47e2-94f1-5cb2083c1e28

After: 


https://github.com/user-attachments/assets/914efc84-13aa-4bde-8c44-d1761f1fe79a

Fixes: #168768

## 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-10-08 14:17:59 +00:00
Victoria Ashworth
884512c06f
Add fallback for 'scene:willConnectToSession:options' (#176580)
This adds an application lifecycle event fallback for when the app has
migrated to UIScene but the plugin has not. So if the app has migrated
to UIScene and receives the `scene:willConnectToSession:options` event,
if no other plugins process the event, it'll attempt to use
`application:didFinishLaunchingWithOptions` event if there are
meaningful launch arguments.

This is a best attempt and may not cover all use 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.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-07 15:01:20 +00:00
Victoria Ashworth
5c66c53a31
Handle FlutterEngine registration when embedded in Multi-Scene apps (#176490)
When Multi-Scene is enabled, Flutter cannot automatically associate the
engine with a scene during the scene connection phase in most cases.
However, the `scene:willConnectToSession:options:` event is critical for
some Flutter plugins that rely on scene connection options (the
scene-equivalent of application launch options).

To workaround this, this PR adds two things:
* Adds a way to manually register a `FlutterEngine` with a
`FlutterPluginSceneLifeCycleDelegate`. Manually registered engines must
also be manually unregistered.
  * This use case is for add to app
* Automatically registers a `FlutterEngine` if the `rootViewController`
of the scene is a `FlutterViewController`
* This use case is for if a Flutter app (not add-to-app) were to enable
multi-scene since the `rootViewController` of the storyboard is a
`FlutterViewController`
  
This PR also makes a fix for when a `FlutterView` is removed from the
scene:
* If a `FlutterView` is removed from a scene, keep the `FlutterEngine`
associated with the scene until it is assigned to a new scene

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

**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-10-07 02:40:02 +00:00
alexskobozev
c18530cbaa
Fix deprecated configureStatusBarForFullscreenFlutterExperience for Android 15+ (#175501)
<!--
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 addresses [issue #175507] by fixing
FlutterActivity.configureStatusBarForFullscreenFlutterExperience() which
no longer works on Android 15 (API 35) because setStatusBarColor is
deprecated and ignored.

## Changes 

- Wrapped window.setStatusBarColor in a version check (if
(Build.VERSION.SDK_INT < 35)).
- Removed the @Deprecated annotation from
configureStatusBarForFullscreenFlutterExperience, since it still works
fine on API <35 and gives a consistent experience with iOS.

## Why

- On API 35+, the call is ignored and the status bar is fully
transparent.
- This is visually acceptable (fullscreen experience looks good), and
matches iOS behavior.

## Screenshots

### API 27
<img width="540" height="960" alt="api27_legacy"
src="https://github.com/user-attachments/assets/f19515e4-5a2d-46fd-af66-93d401f7e2ee"
/>

### API 35
<img width="720" height="1544" alt="api35_legacy"
src="https://github.com/user-attachments/assets/dd946ee4-1945-4209-86cc-a566c474681e"
/>

### iOS

<img width="603" height="1311" alt="ios"
src="https://github.com/user-attachments/assets/9d1cb68d-2abd-4844-a949-1ef33c134792"
/>

## 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 `///`).
- [ ] 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-10-06 17:54:11 +00:00
Jason Simmons
003eb6523c
Roll vulkan-deps to a9e2ca3b (#176322)
The build script for this version of the Vulkan headers defines
VK_USE_PLATFORM_XLIB_KHR. This brings in some X11 headers that define
macros with commonly used names.

Files that include Vulkan headers may need to undefine some of these
macros to prevent conflicts with other code that uses the same names.
2025-10-06 14:28:11 +00:00
Victoria Ashworth
01474413c5
Add an AppDelegate callback for implicit FlutterEngines (#176240)
This PR introduces a new protocol `FlutterImplicitEngineDelegate`, which
adds a callback called `didInitializeImplicitFlutterEngine`, which
returns a new interface called `FlutterImplicitEngineBridge`.

This was added to expose parts of an implicit `FlutterEngine`, such as
when created from a `FlutterViewController` in a storyboard.

``` swift diff
@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}

func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
    // Register plugins with `engineBridge.pluginRegistry`
    GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)

    // Create method channels with `engineBridge.applicationRegistrar.messenger()`
    let batteryChannel = FlutterMethodChannel(
      name: "samples.flutter.dev/battery",
      binaryMessenger: engineBridge.applicationRegistrar.messenger()
    )
    ...

    // Create platform views with `engineBridge.applicationRegistrar.messenger()`
    let factory = FLNativeViewFactory(messenger: engineBridge.applicationRegistrar.messenger())
    ...
}
```

This PR also refactors `FlutterPluginRegistrar` into 3 separate
protocols:
* `FlutterBaseRegistrar`
* `FlutterApplicationRegistrar`
* `FlutterPluginRegistrar`

Most methods are moved from `FlutterPluginRegistrar` to
`FlutterBaseRegistrar` and then `FlutterPluginRegistrar` and
`FlutterApplicationRegistrar` inherit from `FlutterBaseRegistrar`.
`FlutterPluginRegistrar` also has additional methods specific to it -
there are no meaningful/breaking changes to `FlutterPluginRegistrar`.

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

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-06 14:22:27 +00:00
Victoria Ashworth
b3ecbb9034
Add state restoration for UIScene migration (#176305)
When an iOS app migrates to UIScene, the application events for handling
state restoration are no longer called by UIKit. Instead, scene events
in the SceneDelegate must be used. This PR adds support for handling
state restoration in UIScene while still maintaining support for
unmigrated apps, as well.

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

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.

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

**Note**: The Flutter team is currently trialing the use of [Gemini Code
Assist for
GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code).
Comments from the `gemini-code-assist` bot should not be taken as
authoritative feedback from the Flutter team. If you find its comments
useful you can update your code accordingly, but if you are unsure or
disagree with the feedback, please feel free to wait for a Flutter team
member's review for guidance on which automated comments should be
addressed.

<!-- Links -->
[Contributor Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview
[Tree Hygiene]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
[test-exempt]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests
[Flutter Style Guide]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md
[Features we expect every widget to implement]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement
[CLA]: https://cla.developers.google.com/
[flutter/tests]: https://github.com/flutter/tests
[breaking change policy]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes
[Discord]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md
[Data Driven Fixes]:
https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md
2025-10-03 19:08:08 +00:00