This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
Example issue: https://github.com/flutter/flutter/issues/81666
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Improve logging for UTF-8 decoding errors.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
When an exception is thrown within a transformer provided to `Stream.transform(...)`, an asynchronous stack trace pointing to the internal transformation machinery is reported instead of where the call to `transform(...)` was made, making tracking down where these exceptions come from extremely difficult.
### Workaround:
Is there a workaround for this issue?
No.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Not a fix, just additional logging. Tests have been added to ensure this extension works as expected.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/177948
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Add additional analytics for `flutter widget-preview start`
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Analytics collected for `flutter widget-preview start` won't give an accurate representation of usage as IDE plugins will start launching the widget previewer by default. This will result in `widget-preview` analytics effectively tracking the number of IDE users rather than actual usage of the widget previewer.
### Workaround:
Is there a workaround for this issue?
No
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
N/A
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/176462
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Provides guided error message when building for iOS fails due to precompiled headers cache error.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
When using Xcode 26 and switching between branches or upgrading to new beta/stable, it throws an error due to headers of the Flutter framework changing.
### Workaround:
Is there a workaround for this issue?
Run `flutter clean`
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
1. git checkout 3.35.5
2. `flutter create my_app`
3. `flutter build ios`
4. git checkout main
5. `flutter build ios` (it should error)
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/176310
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
`app.dtd` event is not emitted for Flutter web applications run with `--machine`.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Makes it impossible for tooling to connect to the DTD instance associated with a Flutter web application. This impacts the Flutter MCP extension.
### Workaround:
Is there a workaround for this issue?
No workaround available.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Run a web application using `flutter run -d chrome --machine` and verify there's an `app.dtd` event once the application has started.
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
What is the link to the issue this cherry-pick is addressing?
https://github.com/flutter/flutter/issues/176206 / https://github.com/Dart-Code/Dart-Code/issues/5730
This is related to another cherry-pick at https://github.com/flutter/flutter/pull/176976. That cherry-pick adds a warning to `flutter run` and this cherry-pick ensures the warning is forwarded correctly to DAP clients (like VS Code).
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Warns the developer that wireless debugging may be slow on iOS 26 in VS Code.
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Debugging wirelessly on iOS 26 may be slow. This change forwards the warning (which is being cherry-picked by https://github.com/flutter/flutter/pull/176976) to DAP clients so that it can be shown more prominently in VS Code.
### Workaround:
Is there a workaround for this issue?
This change is to show a workaround for the slow debugging to the user.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Testing requires using a DAP client. The automated test verifies the event is forwarded, and I tested manually with the Dart-Code changes when I added this change (screenshots at https://github.com/Dart-Code/Dart-Code/issues/5730#issuecomment-3389479520).
This pull request is created by [automatic cherry pick workflow](https://github.com/flutter/flutter/blob/main/docs/releases/Flutter-Cherrypick-Process.md#automatically-creates-a-cherry-pick-request)
Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
https://github.com/flutter/flutter/issues/176206
### Changelog Description:
Explain this cherry pick in one line that is accessible to most Flutter developers. See [best practices](https://github.com/flutter/flutter/blob/main/docs/releases/Hotfix-Documentation-Best-Practices.md) for examples
Warns the developer that wireless debugging may be slow on iOS 26
### Impact Description:
What is the impact (ex. visual jank on Samsung phones, app crash, cannot ship an iOS app)? Does it impact development (ex. flutter doctor crashes when Android Studio is installed), or the shipping production app (the app crashes on launch)
Debugging wirelessly on iOS 26 may be slow. This warning suggests that the developer use a wired connection.
Additionally, this will be surfaced in IDEs: https://github.com/Dart-Code/Dart-Code/issues/5730
### Workaround:
Is there a workaround for this issue?
The tool is proposing the workaround.
### Risk:
What is the risk level of this cherry-pick?
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
### Validation Steps:
What are the steps to validate that this fix works?
Connect an iPhone running iOS 26 wirelessly, `flutter run`.
**Impacted Users:**
Flutter web developers using the `web-server` device for hot reload/restart.
**Impact Description:**
Hot reload/restart crashes when the browser tab is closed, causing “Bad state: No element” errors and breaking the DWDS connection.
**Workaround:**
Rerun the app.
**Risk:**
Low — changes only affect hot reload/restart handling when no clients are connected.
**Test Coverage:**
Yes — covered by automated integration tests and verified with manual testing across reload/restart scenarios.
**Validation Steps:**
1. run the app on webserver `flutter run -d web-server`
2. open the url
3. do hot reload
4. close the browser
5. do hot reload
You should see a warning `WebSocketProxyService: No clients available.` along with `Recompile complete. No client connected.` printed in the console. The app should no longer crash.
**Merged PR:** https://github.com/flutter/flutter/pull/177026
**Changes in DWDS (Parent PR):** [https://github.com/dart-lang/webdev/pull/2699](https://github.com/dart-lang/webdev/pull/2699)
Fixes https://github.com/flutter/flutter/issues/174791
Fixes https://github.com/flutter/devtools/issues/9252
Previously, if a user selected a widget that was not created in their
project files using the on-device inspector, we would open the code
location for that widget. Now, we open the code location of the nearest
ancestor widget in their project files. (e.g., a user selects `RichText`
in the framework, we open the `Text` widget in their project)
Users can still open the code location for a Flutter framework or
third-party package widget by explicitly selecting it in the DevTools
widget tree. See more details/rationale on issue comment
https://github.com/flutter/devtools/issues/9252#issuecomment-3368491936
_Note: This resolves one of the top user complaints in the 2025 DevTools
user survey._

This change consists of several UI changes:
- Added theming support for light and dark mode based on system
preferences
- Pulled in a subset of the DevTools theming constants
- Reduced size of widget preview buttons and controls
- Added initial support for setting theme based on IDE parameters passed
as query parameters. This does not include responding to theme changes
made after the widget previewer is loaded.
- Fixed issue where the `WidgetPreviewErrorWidget` would still show
controls, even though they aren't relevant
**IDE Theming Example:**
<img width="1149" height="571" alt="image"
src="https://github.com/user-attachments/assets/d84beacd-6b1c-4186-b793-88aae58613c1"
/>
Fix: Update anchorRect for overlayBuilder when anchor moves
fixes: #169457
part of https://github.com/flutter/flutter/issues/173440
## 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.
When registering the `WidgetPreviewScaffoldInspectorService`, we were
originally setting it after the bindings were initialized. This meant
that the widget inspector service extensions were registered with the
original `WidgetInspectorService` and were not taking the custom
codepaths in the override.
This change moves the `WidgetPreviewScaffoldInspectorService`
initialization to before the bindings are initialized.
Also moves `dtd_services_test.dart` to actually use the
`WidgetPreviewScaffoldDtdServices` implementation, which would have
caught the typecast issue in the implementation.
## Description
This PR replaces global `ThemeData.inputDecorationTheme` usage in
`TextFormField` with `InputDecorationTheme.of ` which returns the
ambient `InputDecorationTheme`.
It is a follow up to https://github.com/flutter/flutter/pull/168981
which introduces `InputDecorationTheme.of `.
## Related Issue
Fixes [TextFormField does not inherit local
InputDecorationTheme](https://github.com/flutter/flutter/issues/176391)
## Tests
- Adds 1 test
Fixes#172489
When an OutlinedButton.icon is initially built with a null icon and
later updated to display an icon, the underlying widget implementation
changes. The button switches from a standard OutlinedButton to a private
_OutlinedButtonWithIcon widget.
This switch causes the button's entire semantic node to be destroyed and
a new one created in its place. For screen readers like VoiceOver, this
behavior is disruptive. If an accessibility service is focused on the
button when its icon appears, that focus is lost because the original
semantic node is discarded, leading to strange behaviour as it makes an
best effort to focus on an existing node.
This PR resolves the issue by ensuring the same widget is used
regardless of whether the icon is present. The logic for
_OutlinedButtonWithIcon has been merged into the base class
OutlinedButton, ensuring that no matter if you call OutlinedButton.icon
or OutlinedButton you recieve a widget of type OutlinedButton.
Demo:
https://github.com/user-attachments/assets/e012bac9-823e-46f1-8eba-ec70e6b260a1
Regular import of latest translations.
Some .arb files(cupertino_ko.arb, and material_it.arb) are overwritten
again and will cause translation issues. See comment
https://github.com/flutter/flutter/pull/166496#issuecomment-2773987516.
I manually reverted them back.
This PR doesn't run the date_localization script.
## 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.
Projects within the same workspace can depend on each other without
explicitly specifying path dependencies or dependency overrides using
the following syntax:
```
dependencies:
my_workspace_project: # No constraint or path
```
This is treated as a "hosted" dependency, which conflicts with the path
dependencies used by the widget_preview_scaffold.
This change introduces dependency_overrides for each package in the
workspace watched by the widget previewer to allow for dependencies to
be resolved correctly.
Fixes https://github.com/flutter/flutter/issues/176018
This change introduces `PersistentPreferences`, which allows for the
widget previewer to save settings to disk.
`PersistentPreferences` makes use of the existing `~/.flutter-devtools`
directory used by DevTools for the same purpose, writing preferences in
JSON format to `~/.flutter-devtools/.widget-preview`.
When running `flutter pub get` from the root of a Pub workspace,
localizations are generated for each subproject. However, we were trying
to write the untranslated messages file relative to the current
directory, not the target project's directory.
This change updates the logic for determining the output location of the
untranslated messages file to include the target project root.
Fixes https://github.com/flutter/flutter/issues/174205
With the assumption that IDEs will not create a debug session for the
widget previewer, the widget inspector's source navigation functionality
won't function as there's no IDE to listen to `navigate` events sent via
`postEvent`.
This change overrides some widget inspector behavior to allow for
navigating to source locations via the DTD Editor service instead of
relying on the VM service's `postEvent`.
This change also makes some minor changes to the diagnostic properties
and descriptions displayed within the inspector to display group and
custom preview annotation details.
Towards https://github.com/flutter/flutter/issues/166423
## What's new?
- 🍏 Added the concept of dialogs to the windowing API. New
symbols:
- `DialogWindowControllerDelegate`
- `DialogWindowController`
- `WindowingOwner.createDialogWindowController`
- `DialogWindow`
- `WindowControllerCommon`
- 🥘 Introduced the `WindowControllerCommon` mixin to
share common windowing functionality between controller types
- I have NOT yet implemented dialogs. This pull request ONLY adds the
idea to the API. Win32 implementation to follow :)
## 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.
Related to #176027
Minimum agp version already requires Java 17 this aligns our tooling.
This pr needs to land after the following prs
1. https://github.com/flutter/flutter/pull/176203
2. https://github.com/flutter/flutter/pull/176204
3. https://github.com/flutter/flutter/pull/176097
## 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.