Please fill in the form below, and a flutter domain expert will evaluate this cherry pick request.
### Issue Link:
Part 2 of https://github.com/flutter/flutter/issues/144218
### 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
Implementation of a future fix to allow Xcode 26 to `flutter run` twice in a row.
### 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)
Flutter developers running Xcode 26 can `flutter run` to a tethered iOS device once. However subsequent `flutter run` attempts are likely to fail.
### Workaround:
Is there a workaround for this issue?
Quitting and reopening Xcode.
### 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?
Create a flutter project and run `flutter run` twice in a row with a physical iOS 17+ device and Xcode 26.
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:
Part 1 of https://github.com/flutter/flutter/issues/144218
### 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
Preliminary work for a future fix to allow Xcode 26 to `flutter run` twice in a row.
### 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)
Flutter developers running Xcode 26 can `flutter run` to a tethered iOS device once. However subsequent `flutter run` attempts are likely to fail. This is the first of several PRs to work around that issue.
### Workaround:
Is there a workaround for this issue?
Quitting and reopening Xcode.
### 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 PR adds the classes and functions needed for a future commit, which will turn the new feature on.
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/172627
### 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
Prevents a non-fatal error from causing Xcode compilation failures on macOS 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)
Building iOS flutter apps may crash with Xcode 26.
### Workaround:
Is there a workaround for this issue?
Add NSBonjourServices and NSLocalNetworkUsageDescription settings to your iOS app's Info.plist.
### 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. `flutter create` a new app on macOS 26 beta
2. Install Xcode 26 beta 5
3. `flutter run`
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/168427
### 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
Updates the provisioning profile that Flutter's CI uses.
### 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)
This only impacts the release team. Without this patch, codesigning on try and prod chromium bots will fail.
### 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?
Run a test that requires codesigning, such as "Mac_x64 tool_host_cross_arch_tests"
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/150279
### 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
Emits a warning if `--[no-]disable-dds` is used, users should prefer `--[no-]dds`.
### 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)
Gives a full stable release of warnings before removing a deprecated feature.
### Workaround:
Is there a workaround for this issue?
N/A
### 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/172789
### 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
https://github.com/flutter/flutter/issues/172789https://github.com/flutter/flutter/issues/172789 Using a lower version of Gradle results in a warning message to bump to a minimum of version `8.7.2`, but the warning should bump to a minimum of version `8.7.0`
Reids edit:
[flutter/172789](https://github.com/flutter/flutter/issues/172789) When building for Android, Change warning for minimum gradle version from 8.7.2 to 8.7.0.
### 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 on a lower version of Gradle, Flutter tooling would log a suggestion to bump to a minimum of `8.7.0` instead of `8.7.2`
### Workaround:
Is there a workaround for this issue?
Yes, the user would bump to a higher valid version of Gradle.
### 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?
Use a low version of gradle and see that the Flutter tool recommends using gradle `8.7.0`
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/162324
### 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
This PR fixes a bug where the locale property of a Text widget was not being correctly passed to the accessibility layer, resulting in screen readers not knowing the language of the text.
### 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)
This bug critically impacted accessibility, causing screen readers to mispronounce text in foreign languages and creating a confusing, inaccessible experience for users with visual impairments. The fix ensures the locale property on the Text widget is no longer ignored, correctly passing the language information to the underlying accessibility services so the text is read intelligibly.
### 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?
Unit tests verify this change 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?
#172250
### 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
Fixes a bug where `TextInput.hide` call incorrect clears the text in the active text field.
### 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)
If an app calls `TextInput.hide` to hide the software keyboard, the user input in the current active text field will also be erased. It impacts the production app.
The framework itself doesn't seem to call `TextInput.hide` in a way that would affect the user.
### Workaround:
Is there a workaround for this issue?
Yes, in theory, developers can store and restore the `TextEditingValue`, when they need to call `TextInput.hide`, to undo the clear. However I suspect the reverted PR may also [break voiceover](https://github.com/flutter/flutter/issues/145681#issuecomment-3110985123).
### Risk:
What is the risk level of this cherry-pick?
This is a revert of #160653. The reverted PR was merged in February, and the previous implementation was [introduced in 2021](https://github.com/flutter/engine/pull/23776).
### Test Coverage:
Are you confident that your fix is well-tested by automated tests?
- [] No
This change is a revert so the added test will also get reverted.
### Validation Steps:
What are the steps to validate that this fix works?
To verify the fix on master (it has already landed on master), run this app:
```dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SizedBox(
child: ListView(
children: [
TextButton(
child: Text('hide keyboard'),
onPressed: () =>
SystemChannels.textInput.invokeListMethod("TextInput.hide"),
),
TextField(
controller: TextEditingController(text: '️a' * 20),
maxLines: 1,
),
],
),
),
),
);
}
}
```
focus the text field and then click the hide keyboard button. The text "aaaaaa..." should remain after the button is clicked.
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/57497
### 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
N/A (Beta)
### 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)
Provides a CLI-issued warning to plugins using a workaround we wanted to remove in 2020.
Once this is CP'd in 3.35, the `master` branch (post-3.35) can remove the workaround/tech debt.
### Workaround:
Is there a workaround for this issue?
N/A
### 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/172257
### 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
N/A
### 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)
Cannot release (Windows builder fails)
### 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?
Try publishing another release
After the fuchsia build process, be sure to tag uploaded artifacts with
`content_aware_hash:` if configured.
fixes#171985
This was a bit of a rabbit hole, with some "magic parameters" that
control uploading / tagging. I'm not sure cipd supports two tags with
the say keys; but I wouldn't want the content hash having the key
"git_revision".
Pre-submits: Not affected since --engine-version is always '' which is
read as "do not upload"
Post-submits: Reads the `linux_fuchsia.json` builder to look for flags.
> Note: This needs to land before the tool can be updated to download
the content_aware_hash tag.
Tested: locally, on linux, after building all the x64 targets. With and
without engine-version, with and without linux_fuchsia.json flags.
```shell
$ src/flutter/tools/fuchsia/merge_and_upload_debug_symbols.py --target-arch x64 --engine 'abcd' --upload --out-dir tmp --symbol-dirs out/ci/fuchsia_debug_x64/.build-id out/ci/fuchsia_release_x64/.build-id out/ci/fuchsia_profile_x64/.build-id
Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
['cipd', 'create', '-pkg-def', '/usr/local/google/home/codefu/src/flutter/engine/tmp/debug_symbols.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abcd', '-verification-timeout', '10m0s', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```
```
$ python3 src/flutter/tools/fuchsia/build_fuchsia_artifacts.py --archs x64 --engine 'abc' --cipd-dry-run --upload
Using content hash 2201006225127f112f6576fcf73dd00671b2012e for engine version
codefu: ['cipd', 'create', '-pkg-def', 'fuchsia.cipd.yaml', '-ref', 'latest', '-tag', 'git_revision:abc', '-tag', 'content_aware_hash:2201006225127f112f6576fcf73dd00671b2012e']
```
The `frameworkVersion` string written to the version files wasn't
actually parsable by `GitTagVersion` as it didn't match the format
output by `git`.
This change updates the `frameworkVersion` format to use a `-` instead
of a `.` before the commit count and adds support to the version parsing
regex to handle both `.` and `-` separators before the commit count.
Fixes https://github.com/flutter/flutter/issues/172091
Issues have been solved, we can now have the tests back
## 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.
We need a robust way to get the duration of a route transition in tests,
so that tests can remain independent of the type of route transition and
its duration.
With this PR, this will be the canonical way to pump until a page
transition has finished:
```dart
testWidgets('example', (WidgetTester tester) async {
final TransitionDurationObserver observer = TransitionDurationObserver();
await tester.pumpWidget(
MaterialApp(
navigatorObservers: <NavigatorObserver>[observer],
onGenerateRoute: (RouteSettings settings) { ... },
),
);
expect(find.text('Page 1'), findsOneWidget);
expect(find.text('Page 2'), findsNothing);
// Pump through the whole transition.
await tester.tap(find.text('Next'));
await observer.pumpPastTransition(tester);
expect(find.text('Page 1'), findsNothing);
expect(find.text('Page 2'), findsOneWidget);
// Or, pump through part of a transition with the duration.
await tester.tap(find.text('Back'));
await tester.pump(observer.transitionDuration ~/ 2);
expect(find.text('Page 1'), findsOneWidget);
expect(find.text('Page 2'), findsOneWidget);
});
```
This was spun out of https://github.com/flutter/flutter/pull/165832,
where updating the default route transition and its duration broke tests
in the framework, in customer tests, and in Google tests.
FYI @chrisbobbe
---------
Co-authored-by: Jing Shao <87506348+jingshao-code@users.noreply.github.com>
Adds support for a subset of the DTD `Editor` service registered by IDEs
for use by the widget preview scaffold. Currently, this feature subset
includes support for listening for:
- Source file selection events
- Editor theme change events
This change does not introduce any new functionality that makes use of
these new DTD `Editor` events.