| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
Fix relative executable execution under posix_spawn (#193595) Related to https://github.com/flutter/flutter/issues/193579 Follow-up to https://github.com/flutter/flutter/pull/193582 and https://github.com/flutter/flutter/pull/193664 Dart SDK commit 0171629a5478 migrated macOS process spawning to `posix_spawn`. Under `posix_spawn` and Windows `CreateProcess`, `Process.start` resolves relative executables against the caller's working directory rather than the target `workingDirectory`. While PR #193582 and PR #193664 addressed `customer_testing`, other areas across the repository still invoke relative executables with custom working directories directly via `Process.start` / `Process.run`. This PR addresses the remaining locations: 1. **`dev/bots/suite_runners`**: Construct absolute script paths in `run_add_to_app_life_cycle_tests.dart`, `run_docs_tests.dart`, and `run_skp_generator_tests.dart`. 2. **`packages/flutter_tools`**: In `gradle_utils.dart`, resolve `gradlew` / `gradlew.bat` via `androidDirectory.childFile(...)`. 3. **`dev/devicelab`**: In `utils.dart` `startProcess`, normalize relative executables containing directory separators against `finalWorkingDirectory`. 4. **Engine tooling**: Resolve absolute paths for `content_aware_hash` in `web_ui/dev/common.dart` and `gradlew` in `tools/gradle/generate_gradle_cipd_packages.dart`. ## Testing - `flutter_tools`: Unit tests in `packages/flutter_tools/test/general.shard/android/gradle_utils_test.dart` and `project_test.dart` cover POSIX and Windows `gradlew` path resolution. - Test infrastructure (`dev/`, `engine/`): Validated via CI runs (`test-exempt: changes to test infrastructure`). ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 2 天前 | |
[flutter_tools] Guard socket streams and done futures against socket reset errors (#192941) When remote peers abruptly terminate or reset network connections, POSIX event handlers (such as epoll) trigger low-level socket reset errors (`SocketException: Error event raised in event handler : error condition has been reset, port = 0`) via `_NativeSocket.multiplex`. If these socket error events occur on streams or sink `done` futures that lack error handlers, or when adding to/closing sinks in an error state, the unhandled exception escapes into the Zone and causes Flutter tool crashes. This change: - Introduces `FutureErrorHandling<T>` in `packages/flutter_tools/lib/src/base/common.dart` to provide a reusable `.handleError(...)` extension on `Future` for background futures without requiring empty `(_) {}` callbacks. - Guards `createVmServiceDelegate` channel streams, sink `done` futures, and sink operations against `SocketException`. - Guards `DaemonStreams.fromSocket`, `DaemonStreams.connect`, and daemon server `socket.done` and `socket.addStream` futures. - Adds `onError` handling to `ProxiedPortForwarder` forwarded socket streams. - Adds `onError` handling to `ResidentRunner` log streams. - Adds error handling to `AndroidConsole` socket `done` future on connect and destroy. - Adds unit tests for `FutureErrorHandling.handleError` (including `test` predicate filtering) and regression tests verifying that socket stream and done future errors do not crash the tool. Fixes https://github.com/flutter/flutter/issues/192935 ## 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. | 5 天前 | |
fix(web): hash source maps before rewriting sourceMappingURL with --web-content-hash (#193614) ## Description Fixes a content-hash mismatch when combining `--web-content-hash` and `--source-maps` in `flutter build web`: - **Hash and rename `sourceMapFile` before rewriting `sourceMappingURL` (`_hashAndRenameWebOutput`)**: - Previously, `_hashAndRenameWebOutput` (`packages/flutter_tools/lib/src/build_system/targets/web.dart`) hashed `main.dart.js` *before* rewriting its trailing `//# sourceMappingURL=main.dart.js.map` comment in-place (and stripped the trailing newline because `\s*$` matched `\n` before EOF). - When `updatePrecacheManifest` (`packages/flutter_tools/lib/src/web/content_hash.dart`) later hashed the final `build/web/main.dart.<hash>.js` bytes on disk, the rewritten `sourceMappingURL` comment produced a different SHA-256 prefix, causing `precache_manifest.json` to emit `"urlHashed": false` and a mismatched `"hash"` for `main.dart.<hash>.js`. - `_hashAndRenameWebOutput` now hashes `sourceMapFile` first (`mapHash`), renames it via `computeHashedBasename(oldMapBasename, mapHash, file.fileSystem)` (`main.dart.<mapHash>.js.map`, `main.dart.<mapHash>.mjs.map`, `worker.<mapHash>.js.map`), rewrites `//# sourceMappingURL=<newMapBasename>` in the code file using a positive lookahead `(?=\s*$)` so trailing newlines are preserved, and then hashes and renames the code file (`contentHash`) so its filename hash matches its final on-disk bytes. - **Resolve hashed source map basenames in `Dart2JSTarget.buildFiles` and `Dart2WasmTarget.buildFiles`**: - Uses `_resolveHashedBasename(environment.buildDir, _mainJsMapRegex, 'main.dart.js.map')` and `_resolveHashedBasename(environment.buildDir, _mainMjsMapRegex, 'main.dart.mjs.map')` when `compilerConfig.webContentHash` is enabled so `WebReleaseBundle` copies the independently content-hashed `.map` files to `build/web/`. ## Related Issues - Fixes #193601 - Part of #149031 ## Tests - Updated source map hashing unit tests in `packages/flutter_tools/test/general.shard/build_system/targets/web_test.dart` to verify independent map and code content hashes and trailing newline preservation. - Added a regression test (`hashAndRenameWebOutput with sourceMapFile produces matching hash and urlHashed: true in updatePrecacheManifest`) verifying end-to-end parity between `_hashAndRenameWebOutput` and `updatePrecacheManifest`. | 3 天前 | |
[flutter_tools] forward --offline flag to pub.get in update-packages (#193619) When running `flutter update-packages --offline`, the `--offline` flag was parsed and used to validate incompatible option combinations (such as `--force-upgrade` and `--cherry-pick-package`), but was not forwarded to the underlying `pub.get` invocations. Forward `offline` through `_pubGet` to `pub.get` so that `pub` does not attempt network operations in offline environments. Fixes https://github.com/flutter/flutter/issues/193423 ## 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. | 1 天前 | |
[flutter_tools] Implement Device Service extension and flutter devices integration (#192126) Implement `DeviceService` and integrate it with `FlutterDeviceManager` to support dynamic custom devices from tool extensions. - Define `Category` (`web`, `desktop`, `mobile`, `other`) and `TargetDevice` in `package:flutter_tools_core`. - Define the `DeviceService` extension service interface (`device.getDevices` and `device.isSupportedForProject`) in `package:flutter_tools_extension`. - Implement `LinuxDeviceService` in `package:flutter_tools_extension_linux_prototype`. - Implement `ExtensionDevices`, `ExtensionDeviceClient`, and `ExtensionBackedDevice` in `packages/flutter_tools/lib/src/experimental/extension_device_manager.dart`, and update `Device.isSupportedForProject` to return `FutureOr<bool>`. - Bootstrap `ExtensionManager` in `ToolDependencies.bootstrap` and wire it into `FlutterDeviceManager`. - Add unit, hermetic, and integration test coverage across `flutter_tools_core`, `flutter_tools_extension_linux_prototype`, and `flutter_tools`. Part of https://github.com/flutter/flutter/issues/190692 --------- Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> | 2 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Reland "[flutter_tools] Fix DTD "Stream already subscribed" error and wait for analysis over DTD in widget preview" (#193658) ## Description Relands https://github.com/flutter/flutter/pull/192930 (which was reverted in https://github.com/flutter/flutter/pull/193637). ### What changed since the original PR - In `AnalysisServer`, store and cancel the `stdout` and `stderr` stream subscriptions in `dispose()` before closing `_analyzingController` and `_errorsController`, and guard `_analyzingController.add` with `!_analyzingController.isClosed` in `_handleProgress`. Previously, `$/progress` notifications arriving from the language server during or after `AnalysisServer.dispose()` threw `Bad state: Cannot add new events after calling close` in `widget_preview_scaffold_test.dart`. - In `widget_preview_test_helpers.dart`, await `analysisServer.onExit` after `analysisServer.dispose()` in `addTearDown` so the analysis server process has fully exited before temporary directory cleanup on Windows. - Added a hermetic unit test in `analyze_continuously_test.dart` verifying that `AnalysisServer` does not throw when `$/progress` notifications arrive during or after `dispose()`. ### Original description During widget preview startup or file updates: 1. Concurrent calls to retrieve previews or wait for analysis (e.g., initial command startup racing with file watcher events) could concurrently invoke `_waitForLspService()`, causing duplicate `streamListen` calls to the Dart Tooling Daemon. DTD throws JSON-RPC error 103 (`Stream already subscribed`) when a client attempts to subscribe to a stream it is already listening to. 2. `WidgetPreviewDtdServices` previously considered the `Lsp` service ready as soon as *any* `Lsp` method was registered on DTD (or upon receiving the first `ServiceRegistered` event for `Lsp`). Because the analysis server registers its LSP methods sequentially before posting an `initialized` event on the `Lsp` stream, calls to `Lsp.dart/workspace/analysis/complete` or `Lsp.dart/workspace/getFlutterWidgetPreviews` could race ahead of their registration and fail with `-32601 (method not found)`. 3. When connecting to a pre-existing analysis server over DTD (`--dtd-url`), `LspPreviewDetector.analysisServer` is `null`, causing `analysisServer?.waitForAnalysis()` calls during startup and file updates to be no-ops. This change: - Deduplicates in-flight calls to `_waitForLspService()` using a shared future (`_waitForLspServiceFuture`) so concurrent callers await the same LSP registration check instead of issuing duplicate DTD requests. - Separates `lspServiceAvailable` (whether an analysis server has begun registering `Lsp` services on DTD) from `_allLspServicesRegistered` (whether all required widget preview LSP methods in `kRequiredLspServices` are registered), and updates `_waitForLspServiceHelper()` to listen for the `initialized` event on the `Lsp` stream before checking `getRegisteredServices()`. - Consolidates LSP DTD calls into `_callLspService()` and removes the `kMethodNotFound` polling loop now that `_waitForLspService()` ensures all required LSP methods are registered. - Safely catches and ignores `RpcErrorCodes.kStreamAlreadySubscribed` on `streamListen` calls in `WidgetPreviewDtdServices` (`safeStreamListen`). - Adds `WidgetPreviewDtdServices.waitForAnalysis()` (invoking `Lsp.dart/workspace/analysis/complete` over DTD), unifies `LspPreviewDetector.waitForAnalysis()` so widget preview waits for analysis completion on both tool-managed and pre-existing analysis servers, and moves the startup `waitForAnalysis()` call inside the DTD error-handling `try / catch` block in `WidgetPreviewStartCommand`. - Adds hermetic regression tests covering concurrent/pre-subscribed DTD streams, partial vs. full LSP service registration (`Lsp.initialized`), and waiting for analysis over DTD. Fixes https://github.com/flutter/flutter/issues/192424 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 2 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] [dap] Handle --release, --profile and --wasm in args or toolArgs (#192926) This fixes two things: 1. It treats `--wasm` as an indicator that debugging is not supported, just like `--release` and `--profile`. This prevents us trying to initialize a debugger which never completes (and blocks the `flutter.appStarted` event from ever being forwarded) 2. It checks both `args` and `toolArgs` for these flags, ebcause for Flutter `args` and `toolArgs` are essentially the same (unlike Dart), so users may put them in either place. See https://github.com/Dart-Code/Dart-Code/issues/6178 | 17 天前 | |
[flutter_tools] Migrate DriveCommand, FlutterDriverFactory, and WebDriverService to constructor DI (#193543) Migrates `DriveCommand`, `FlutterDriverFactory`, and `WebDriverService` to explicit constructor dependency injection via `ToolContext`, `Analytics`, `BuildSystem`, and `BuildTargets`. Fork diff: https://github.com/bkonyi/flutter/compare/master...di/22b-2-drive-and-web-driver Part of https://github.com/flutter/flutter/issues/188471 ## 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. | 1 天前 | |
[flutter_tools] Implement Device Service extension and flutter devices integration (#192126) Implement `DeviceService` and integrate it with `FlutterDeviceManager` to support dynamic custom devices from tool extensions. - Define `Category` (`web`, `desktop`, `mobile`, `other`) and `TargetDevice` in `package:flutter_tools_core`. - Define the `DeviceService` extension service interface (`device.getDevices` and `device.isSupportedForProject`) in `package:flutter_tools_extension`. - Implement `LinuxDeviceService` in `package:flutter_tools_extension_linux_prototype`. - Implement `ExtensionDevices`, `ExtensionDeviceClient`, and `ExtensionBackedDevice` in `packages/flutter_tools/lib/src/experimental/extension_device_manager.dart`, and update `Device.isSupportedForProject` to return `FutureOr<bool>`. - Bootstrap `ExtensionManager` in `ToolDependencies.bootstrap` and wire it into `FlutterDeviceManager`. - Add unit, hermetic, and integration test coverage across `flutter_tools_core`, `flutter_tools_extension_linux_prototype`, and `flutter_tools`. Part of https://github.com/flutter/flutter/issues/190692 --------- Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> | 2 天前 | |
Exclude local Swift package schemes from --flavor error message (#191098) <!-- 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 --> When a developer mistypes a `--flavor` (e.g. `flutter build ios --flavor Prdo`), Flutter reports the available schemes so they can pick a valid one: ``` The Xcode project defines schemes: Runner, Amplitude-Swift, Foo-Dependency... You must specify a --flavor option to select one of the available schemes. ``` `XcodeProjectInfo` already filters two kinds of non-flavor schemes out of this list: Flutter's own generated SwiftPM packages, and *remote* Swift package checkouts (packages fetched by SwiftPM into the build directory's `checkouts` folder). Xcode auto-merges each of those packages' own `.xcscheme` files into the host project's scheme list, even though they aren't declared in the host `.xcodeproj` and aren't real Flutter flavors. What wasn't handled: **local** Swift packages — ones added directly to the Xcode project (an `XCLocalSwiftPackageReference` in `project.pbxproj`, e.g. living inside `ios/`) rather than fetched as a remote dependency. Those never appear under the `checkouts` directory, so their auto-merged schemes leaked straight through into `definesCustomSchemes`/`schemes`, and ended up quoted in the error message as if they were valid `--flavor` values. This PR parses `XCLocalSwiftPackageReference` entries out of `project.pbxproj`, resolves each entry's `relativePath` against the host app root, and — for any local package that ships its own `.swiftpm/xcode/xcshareddata/xcschemes/` directory — adds those scheme names to the same ignore set used for remote checkouts. The scheme-directory scan itself was already duplicated between the (new) local-package path and the existing remote-checkout path, so it's factored into one small shared helper. Fixes #190098 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 | 13 天前 | |
[flutter_tools] Migrate DriveCommand, FlutterDriverFactory, and WebDriverService to constructor DI (#193543) Migrates `DriveCommand`, `FlutterDriverFactory`, and `WebDriverService` to explicit constructor dependency injection via `ToolContext`, `Analytics`, `BuildSystem`, and `BuildTargets`. Fork diff: https://github.com/bkonyi/flutter/compare/master...di/22b-2-drive-and-web-driver Part of https://github.com/flutter/flutter/issues/188471 ## 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. | 1 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
docs(tools): nit: say hook/build.dart in CMake native assets comment (#192205) The comment in the generated CMakeLists.txt refers to build.dart, but the file is hook/build.dart. Updated the templates, the migration that inserts the same block, its test, and the in-repo copies. No functional change. No test affected. This is just a nit about a slightly-inaccurate comment and I ultimately see it as an optional change. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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: Ben Konyi <bkonyi@google.com> | 9 天前 | |
[flutter_tools] Guard socket streams and done futures against socket reset errors (#192941) When remote peers abruptly terminate or reset network connections, POSIX event handlers (such as epoll) trigger low-level socket reset errors (`SocketException: Error event raised in event handler : error condition has been reset, port = 0`) via `_NativeSocket.multiplex`. If these socket error events occur on streams or sink `done` futures that lack error handlers, or when adding to/closing sinks in an error state, the unhandled exception escapes into the Zone and causes Flutter tool crashes. This change: - Introduces `FutureErrorHandling<T>` in `packages/flutter_tools/lib/src/base/common.dart` to provide a reusable `.handleError(...)` extension on `Future` for background futures without requiring empty `(_) {}` callbacks. - Guards `createVmServiceDelegate` channel streams, sink `done` futures, and sink operations against `SocketException`. - Guards `DaemonStreams.fromSocket`, `DaemonStreams.connect`, and daemon server `socket.done` and `socket.addStream` futures. - Adds `onError` handling to `ProxiedPortForwarder` forwarded socket streams. - Adds `onError` handling to `ResidentRunner` log streams. - Adds error handling to `AndroidConsole` socket `done` future on connect and destroy. - Adds unit tests for `FutureErrorHandling.handleError` (including `test` predicate filtering) and regression tests verifying that socket stream and done future errors do not crash the tool. Fixes https://github.com/flutter/flutter/issues/192935 ## 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. | 5 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Explicitly track host CPU architecture in command result analytics (#191836) Upgrades `package:unified_analytics` to `8.0.18` and passes `globals.os.hostPlatform.platformName` to `Event.flutterCommandResult` to explicitly track host architecture across all host operating systems. Fixes https://github.com/flutter/flutter/issues/191765 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 | 2 天前 | |
[tool] Migrate TestCommand and platform runner to modular dependency injection (#190789) ## Description This pull request migrates `TestCommand`, `FlutterTestRunner`, `FlutterPlatform`, `FlutterWebPlatform`, and `TestGoldenComparator` to modular dependency injection using `ToolContext`. This is Layer 21c in the modular dependency injection migration for the testing subsystem (Layer 21a [#192923](https://github.com/flutter/flutter/pull/192923) and Layer 21b [#192924](https://github.com/flutter/flutter/pull/192924) have merged into `master`). ### Fork Compare Link * Compare: https://github.com/bkonyi/flutter/compare/master...di/21-testing-subsystem Part of [#188471](https://github.com/flutter/flutter/issues/188471). ## Tests * `test/commands.shard/hermetic/test_test.dart` * `test/general.shard/flutter_platform_test.dart` * `test/commands.shard/hermetic/flutter_web_platform_test.dart` * `test/general.shard/test/test_golden_comparator_test.dart` * `test/integration.shard/test_golden_comparator_test.dart` | 4 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Migrate DriveCommand, FlutterDriverFactory, and WebDriverService to constructor DI (#193543) Migrates `DriveCommand`, `FlutterDriverFactory`, and `WebDriverService` to explicit constructor dependency injection via `ToolContext`, `Analytics`, `BuildSystem`, and `BuildTargets`. Fork diff: https://github.com/bkonyi/flutter/compare/master...di/22b-2-drive-and-web-driver Part of https://github.com/flutter/flutter/issues/188471 ## 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. | 1 天前 | |
Reland "[flutter_tools] Fix DTD "Stream already subscribed" error and wait for analysis over DTD in widget preview" (#193658) ## Description Relands https://github.com/flutter/flutter/pull/192930 (which was reverted in https://github.com/flutter/flutter/pull/193637). ### What changed since the original PR - In `AnalysisServer`, store and cancel the `stdout` and `stderr` stream subscriptions in `dispose()` before closing `_analyzingController` and `_errorsController`, and guard `_analyzingController.add` with `!_analyzingController.isClosed` in `_handleProgress`. Previously, `$/progress` notifications arriving from the language server during or after `AnalysisServer.dispose()` threw `Bad state: Cannot add new events after calling close` in `widget_preview_scaffold_test.dart`. - In `widget_preview_test_helpers.dart`, await `analysisServer.onExit` after `analysisServer.dispose()` in `addTearDown` so the analysis server process has fully exited before temporary directory cleanup on Windows. - Added a hermetic unit test in `analyze_continuously_test.dart` verifying that `AnalysisServer` does not throw when `$/progress` notifications arrive during or after `dispose()`. ### Original description During widget preview startup or file updates: 1. Concurrent calls to retrieve previews or wait for analysis (e.g., initial command startup racing with file watcher events) could concurrently invoke `_waitForLspService()`, causing duplicate `streamListen` calls to the Dart Tooling Daemon. DTD throws JSON-RPC error 103 (`Stream already subscribed`) when a client attempts to subscribe to a stream it is already listening to. 2. `WidgetPreviewDtdServices` previously considered the `Lsp` service ready as soon as *any* `Lsp` method was registered on DTD (or upon receiving the first `ServiceRegistered` event for `Lsp`). Because the analysis server registers its LSP methods sequentially before posting an `initialized` event on the `Lsp` stream, calls to `Lsp.dart/workspace/analysis/complete` or `Lsp.dart/workspace/getFlutterWidgetPreviews` could race ahead of their registration and fail with `-32601 (method not found)`. 3. When connecting to a pre-existing analysis server over DTD (`--dtd-url`), `LspPreviewDetector.analysisServer` is `null`, causing `analysisServer?.waitForAnalysis()` calls during startup and file updates to be no-ops. This change: - Deduplicates in-flight calls to `_waitForLspService()` using a shared future (`_waitForLspServiceFuture`) so concurrent callers await the same LSP registration check instead of issuing duplicate DTD requests. - Separates `lspServiceAvailable` (whether an analysis server has begun registering `Lsp` services on DTD) from `_allLspServicesRegistered` (whether all required widget preview LSP methods in `kRequiredLspServices` are registered), and updates `_waitForLspServiceHelper()` to listen for the `initialized` event on the `Lsp` stream before checking `getRegisteredServices()`. - Consolidates LSP DTD calls into `_callLspService()` and removes the `kMethodNotFound` polling loop now that `_waitForLspService()` ensures all required LSP methods are registered. - Safely catches and ignores `RpcErrorCodes.kStreamAlreadySubscribed` on `streamListen` calls in `WidgetPreviewDtdServices` (`safeStreamListen`). - Adds `WidgetPreviewDtdServices.waitForAnalysis()` (invoking `Lsp.dart/workspace/analysis/complete` over DTD), unifies `LspPreviewDetector.waitForAnalysis()` so widget preview waits for analysis completion on both tool-managed and pre-existing analysis servers, and moves the startup `waitForAnalysis()` call inside the DTD error-handling `try / catch` block in `WidgetPreviewStartCommand`. - Adds hermetic regression tests covering concurrent/pre-subscribed DTD streams, partial vs. full LSP service registration (`Lsp.initialized`), and waiting for analysis over DTD. Fixes https://github.com/flutter/flutter/issues/192424 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 2 天前 | |
[flutter_tools] Revert PR: Extract Windows archives using native tar with PowerShell fallback (#193161) Fixes https://github.com/flutter/flutter/issues/193156 This PR reverts commit b138043fc75c1270e1bd9f1fa0a5c1299e86e638, which was causing the Flutter -> Packages and Flutter -> DevTools rolls to fail. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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. **Text exemption:** Revert. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 11 天前 | |
[tool] Fix broken comment references and code spans in doc comments (#168498) Enables the `comment_references` and `unintended_html_in_doc_comment` lints in `packages/flutter_tool`, then fixes each of the triggering cases. This PR is test exempt due to only affecting documentation comments. ## 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. [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 | 1 年前 | |
Cleanup DDC SDK build targets (#193193) Replace the two existing DDC sdk.js build targets: ``` flutter/web_sdk:flutter_dartdevc_canvaskit_kernel_sdk_amd flutter/web_sdk:flutter_dartdevc_canvaskit_kernel_sdk_ddcLibraryBundle ``` with new variants: ``` flutter/web_sdk:flutter_ddc_canary_sdk flutter/web_sdk:flutter_ddc_stable_sdk ``` This removes the dart_sdk.js artifact built with the AMD module system flags. It is no longer supported and inaccessible from the flutter_tools CLI. Other PRs are in flight to delete the remaining test references to this module system that are no longer running. This also prepares for the eventual flip of the DDC `--canary` flag default back to `false`. We are now building a dart_sdk.js artifact with the flag disabled. Issue: https://github.com/flutter/flutter/issues/142060 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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: Ben Konyi <bkonyi@google.com> | 6 天前 | |
[flutter_tools] Include data assets from hooks when pubspec.yaml is empty (#193434) When `flutterManifest.isEmpty` (for example, a `pubspec.yaml` without a `flutter:` section), `ManifestAssetBundle.build` previously returned early with an empty `AssetManifest.bin`, ignoring any data assets produced by build/link hooks (`flutterHookResult.dataAssets`). Bug: * https://github.com/flutter/flutter/issues/146264 ### Changes - Only short-circuit with an empty manifest in `ManifestAssetBundle.build` when both `flutterManifest.isEmpty` and `flutterHookResult?.dataAssets.isEmpty ?? true`. - Skip `computeTransitiveDependencies` when `flutterManifest.isEmpty`. - Add a unit test in `asset_bundle_test.dart` verifying that data assets from hooks are bundled when `pubspec.yaml` is empty. ### PR Stack | # | PR | Branch | Commit | | :-: | :--- | :--- | :--- | | **1** | **👉 https://github.com/flutter/flutter/pull/193434 (this PR)** | `data-assets-empty-pubspec` | https://github.com/flutter/flutter/pull/193434/commits/62199c43cd6883c0e5ef766f4de6fa8a36256bf7 | | 2 | https://github.com/flutter/flutter/pull/193435 | `data-assets-flutter-test` | https://github.com/flutter/flutter/pull/193435/commits/25be1ab2f435292b513b693f6330bdb616ea0083 | | 3 | https://github.com/flutter/flutter/pull/193436 | `data-assets-dev-dependencies-release-test` | https://github.com/flutter/flutter/pull/193436/commits/79abad9f83e62d86223f00b022b81a58c028b010 | | 4 | https://github.com/flutter/flutter/pull/193437 | `data-assets-widget-preview` | https://github.com/flutter/flutter/pull/193437/commits/98f10012c0148414094aa152c11ae3585060b266 | ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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. | 6 天前 | |
[tool] Migrate Web build subcommands and toolchain to modular dependency injection (#190783) ## Summary Part 17 of the modular dependency injection migration. > [!NOTE] > Stacked on [#192462](https://github.com/flutter/flutter/pull/192462) (`di/17a-build-bundle-command`), which migrated `BuildBundleCommand` to modular DI. * Migrates Web build subcommand and toolchain components to modular constructor dependency injection: - `BuildWebCommand({required BuildSystem buildSystem, required FeatureFlags featureFlags, required ToolContext toolContext, required super.verboseHelp, BuildTargets buildTargets = const BuildTargetsImpl(), WebBuilder? webBuilder})` * Passes `ToolContext` directly to subcommands, eliminating `context.get` fallbacks in `BuildCommand` and `WebBuilder`. * Injects `FileSystem` into `defaultDepfilePath` and `getAssetBuildDirectory`. * Migrates unit tests in `test/commands.shard/hermetic/build_web_test.dart` to hermetic `testWithoutContext`. Part of #188471 | 5 天前 | |
refactor(flutter_tools): clean up dead unreferenced declarations (#191163) Removes dead, unreferenced internal declarations across `packages/flutter_tools`. This is a **deterministic, tool-guided cleanup** performed using [`undead`](https://pub.dev/packages/undead) (whole-program AST reachability analysis). Because candidate declarations are identified through formal analyzer graph traversals rather than generative AI synthesis, there is **almost zero risk of AI hallucinations or speculative refactoring regressions**. --- ### 🔍 How `undead` Works & Non-Breaking Safety Guarantees Unlike basic lexical lints (`unused_element`, `unused_field`) which only detect file-private (`_`) identifiers within a single compilation unit, `undead` builds a comprehensive reachability graph starting from: 1. **Public API Entrypoints**: All exported root declarations in `lib/*.dart`. 2. **Executable Roots**: Binary/CLI command entrypoints. 3. **Test Suites**: Unit and integration test harnesses in `test/`. Any internal declaration under `lib/src/` with zero reachable paths from any entrypoint or test root is flagged as dead code. #### Verification & Non-Breaking Invariants * **Public API Preservation**: All public exports in `lib/` remain strictly untouched. * **Sealed Hierarchy Protection**: Subtypes of `sealed` classes are preserved to guarantee Dart 3 pattern-matching switch exhaustiveness. * **Framework Pragmas**: Entrypoints annotated with `@pragma('vm:entry-point')` are preserved. * **Regression Verification**: Verified clean via full `flutter_tools` static analysis (`dart analyze`) and passing local test suites (`dart test`) with zero behavioral drift. --- ### 📦 Removed Declarations Removes dead unreferenced declarations identified during the codebase reachability audit: - AndroidSdkNdkHelpers, kSupportedAbis, writeLocalProperties, conflictDetected - OverrideArtifacts, kSystemCodeSuccess, kSystemCodeDeviceFull - getNameForHostPlatform, getAotBuildDirectory, getFuchsiaBuildDirectory - kXcodeBuildScriptValueBuild, kXcodeBuildScriptValueEmbed, kXcodeBuildScriptValueAddToAppBuild - getNameForTargetPlatform, getTargetPlatformForName - verifyOutputDirectories, NoOpBuildTargets, _NoOpTarget - getDefaultApplicationKernelPath, DiscoveredApp, NoIdeValidator, ValidatorWithResult - flutterMacOSFrameworkDir, OSArchitectures, _osTargets, kLuciEnvName - loadDwdsDirectory, generateMethodArguments, L10nMissingPlaceholderException - HeaderGenerator, ConstructorGenerator, kExplicitlyExcludedPackages - generateDDCBootstrapScript, parseVersionForWindows, EdgeValidator - PreviewProperty, ParsedUnitResultExtension, SourceExtension, daemon id Also removed unused imports left behind by deletions. --- ### 🤖 Tool Provenance & Reproduction Dead code detection and reachability analysis performed with [`undead`](https://pub.dev/packages/undead) (`v0.1.0`). To reproduce or re-run this reachability audit locally: ```bash cd packages/flutter_tools && dart run undead@ ``` | 1 个月前 | |
[flutter_tools] Migrate BuildBundleCommand to modular dependency injection (#192462) ## Description This PR splits `BuildBundleCommand` migration out of [#190783](https://github.com/flutter/flutter/pull/190783) (part of modular dependency injection migration in flutter_tools). - Migrates `BuildBundleCommand` to modular dependency injection with `BuildSystem`, `FeatureFlags`, and `ToolContext`. - Exposes `FeatureFlags? featureFlags` on `FlutterCommandRunner`. - Updates `FlutterCommand.targetFile` to use `toolContext?.fs`. - Converted `build_bundle_test.dart` from permeable context tests to hermetic `testWithoutContext` tests. | 19 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Add --flavor support for Windows desktop builds (#187034) <!-- 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 --> Flutter desktop on Windows currently has no equivalent of the `--flavor` plumbing that already exists for Android, iOS, and macOS: `flutter build windows --flavor X` is rejected at the command-parser level, `flutter run -d windows --flavor X` emits a "flavor only supported on Android, iOS, macOS" warning, and there is no convention for producing per-flavor binaries or build directories. This PR wires the existing flavor infrastructure end-to-end on Windows so that multiple flavors can coexist in the same project without colliding on disk or in the runner. ### What changes - **`flutter build windows`** accepts `--flavor` via the shared `usesFlavorOption()` helper. - **`WindowsDevice.supportsFlavors`** returns `true`, so `flutter run -d windows --flavor X` no longer warns and now drives the flavored build pipeline. - **Build directory** is namespaced per flavor: `build/windows/<arch>/<flavor>/runner/<Config>/` (parity with Android/iOS/macOS). Projects that don't pass `--flavor` keep the legacy `build/windows/<arch>/runner/<Config>/` layout — no migration required. - **CMake configure** receives `-DFLUTTER_APP_FLAVOR=<flavor>` so the generated project can react to the flavor at configure time. - **Generated CMake template** (`windows.tmpl/CMakeLists.txt.tmpl`) suffixes `BINARY_NAME` with `-<flavor>` when `FLUTTER_APP_FLAVOR` is defined. The branch is guarded by `if(DEFINED FLUTTER_APP_FLAVOR AND NOT FLUTTER_APP_FLAVOR STREQUAL "")`, so existing projects regenerated from this template behave identically when no flavor is passed. - **Runner template** (`windows.tmpl/runner/CMakeLists.txt` + `main.cpp.tmpl`) exposes `FLUTTER_APP_FLAVOR` as a compile-time preprocessor define via `target_compile_definitions` and uses it to suffix the Win32 window title, giving projects a one-line entry point for flavor-aware native behavior without any additional Flutter tool surface area. - **Runner resource template** (`windows.tmpl/runner/Runner.rc.tmpl`) introduces a `FLUTTER_BINARY_NAME` preprocessor define — injected via the same `target_compile_definitions` mechanism already used for `FLUTTER_VERSION_*` — and uses it for the `InternalName` and `OriginalFilename` PE metadata fields, so the version resource stays in sync with the actual on-disk binary name regardless of flavor. - **Dart-side** continues to use the existing `appFlavor` getter from `package:flutter/services.dart`, which reads `FLUTTER_APP_FLAVOR` from the dart-defines that `toEnvironmentConfig()` already produces. No framework changes required. ### Design choices - **Build directory nests flavor above `runner/<Config>`**: the `runner/<Config>` leaf reflects the Visual Studio multi-config generator (Debug/Profile/Release are subdirectories chosen at build time, not at CMake configure time). Inserting the flavor above this segment keeps the VS solution reusable across modes for a given flavor. - **`FLUTTER_BINARY_NAME` in `Runner.rc`**: PE metadata correctness matters because tools (installers, code-signing pipelines, Windows Error Reporting) read `OriginalFilename` and `InternalName` from the version resource. Passing the CMake variable as a preprocessor define costs nothing and avoids any `configure_file` indirection in the template. - Per-flavor assets, icons, `Package.appxmanifest`, and installer scripts remain the project's responsibility — this PR intentionally keeps the tool agnostic and only standardizes the plumbing. ### Tests - New `test/general.shard/windows/build_windows_flavor_test.dart` covers: - `flutter build windows --flavor apple` invokes CMake with `-DFLUTTER_APP_FLAVOR=apple` and a flavor-namespaced working directory, and the success log references `build\windows\x64\apple\runner\Release\`. - `getCmakeExecutableName` returns the base binary name without a flavor, and `name-flavor` when a flavor is provided (empty string treated as no flavor). - `getWindowsBuildDirectory` returns the legacy path without a flavor and inserts the flavor segment when one is provided. - Existing `test/commands.shard/hermetic/build_windows_test.dart` continues to pass with no changes, confirming the legacy no-flavor path is unaffected. ### Manual verification Generated an example project, then ran the full matrix: ``` flutter build windows --flavor apple # → build\windows\x64\apple\runner\Release\example-apple.exe flutter build windows --flavor banana # → build\windows\x64\banana\runner\Release\example-banana.exe flutter build windows # → build\windows\x64\runner\Release\example.exe (unchanged) flutter run -d windows --flavor apple # launches, no "unsupported flavor" warning ``` All three builds coexist in `build\windows\x64\` without overwriting each other, the Win32 window title reflects the flavor, and the Dart UI reads `appFlavor` correctly at runtime in each binary. PE metadata (`InternalName`, `OriginalFilename`) matches the actual filename in all three cases. ### Backward compatibility - Projects that never pass `--flavor` see no change: same build directory, same binary name, same generated CMake. - Existing projects do not need to regenerate `windows/CMakeLists.txt` to keep working; they only need to regenerate (or hand-patch the `if(DEFINED FLUTTER_APP_FLAVOR)` branch) to opt into flavor support. Fixes #98994 ## Pre-launch Checklist - [X] I read the [[Contributor Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview)] and followed the process outlined there for submitting PRs. - [X] I read the [[AI contribution guidelines](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines)] and understand my responsibilities, or I am not using AI tools. - [X] I read the [[Tree Hygiene](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md)] wiki page, which explains my responsibilities. - [X] I read and followed the [[Flutter Style Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md)], including [[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)]. - [X] I signed the [[CLA](https://cla.developers.google.com/)]. - [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](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests)]. - [X] I followed the [[breaking change policy](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes)] and added [[Data Driven Fixes](https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md)] 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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 | 3 个月前 | |
[ Tool ] Enable `omit_obvious_*_types` and `specify_nonobvious_*_types` lints (#172018) Sources under `packages/flutter_tools/` aren't accessible to the average Flutter user by navigating through sources from their projects, so it doesn't need to be as explicitly verbose with types for readability purposes. The `always_specify_types` lint results in extremely verbose code within the tool which adds little value. This change disables `always_specify_types` in favor of a new set of lints that aim to reduce verbosity by removing obvious types while also maintaining readability in cases where variable types otherwise wouldn't be obvious: - `omit_obvious_local_variable_types` - `omit_obvious_property_types` - `specify_nonobvious_local_variable_types` - `specify_nonobvious_property_types` | 1 年前 | |
Set --no-js-strongly-connected-components for DDC compiles by default (#193485) Context: DDC's old module system was sensitive to load order, so mutual/cyclic imports needed to be combined into a single 'module' (using a strongly-connected-components/SCC algorithm in our various build infrastructure). DDC's new Library Bundle module system doesn't have this restriction, so we can safely disable SCCs. The net result is that every library emits one JS artifact, which helps us avoid problems with overly large connected components causing parse deoptimizations in Chrome/V8. More artifacts are emitted (so perhaps higher compile time), but the overall load time is improved - especially for larger apps. Resolves some of the performance degradations reported in: https://github.com/flutter/flutter/issues/192687 | 4 天前 | |
[flutter_tools] Bootstrap DeviceManager in ToolDependencies (#193524) ## Summary Migrates `DeviceManager` (`FlutterDeviceManager`) initialization out of `context_runner.dart` and into `ToolDependencies.bootstrap` in `tool_dependencies.dart`, exposing `deviceManager` on `ToolDependencies`. * Bootstraps `AndroidWorkflow`, `MacOSWorkflow`, `WindowsWorkflow`, and `FlutterDeviceManager` in `ToolDependencies.bootstrap`. * Removes the `DeviceManager` fallback from `context_runner.dart` and binds `DeviceManager: () => toolDeps.deviceManager` in `runner.dart` after bootstrapping so unmigrated callers accessing `globals.deviceManager` resolve the bootstrapped instance. * Wires `toolDependencies.deviceManager` into `DaemonCommand` and `DevicesCommand` in `executable.dart`. * Adds unit test coverage in `packages/flutter_tools/test/general.shard/context/dependency_injection_test.dart`. Part of https://github.com/flutter/flutter/issues/188471 ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 3 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Guard socket streams and done futures against socket reset errors (#192941) When remote peers abruptly terminate or reset network connections, POSIX event handlers (such as epoll) trigger low-level socket reset errors (`SocketException: Error event raised in event handler : error condition has been reset, port = 0`) via `_NativeSocket.multiplex`. If these socket error events occur on streams or sink `done` futures that lack error handlers, or when adding to/closing sinks in an error state, the unhandled exception escapes into the Zone and causes Flutter tool crashes. This change: - Introduces `FutureErrorHandling<T>` in `packages/flutter_tools/lib/src/base/common.dart` to provide a reusable `.handleError(...)` extension on `Future` for background futures without requiring empty `(_) {}` callbacks. - Guards `createVmServiceDelegate` channel streams, sink `done` futures, and sink operations against `SocketException`. - Guards `DaemonStreams.fromSocket`, `DaemonStreams.connect`, and daemon server `socket.done` and `socket.addStream` futures. - Adds `onError` handling to `ProxiedPortForwarder` forwarded socket streams. - Adds `onError` handling to `ResidentRunner` log streams. - Adds error handling to `AndroidConsole` socket `done` future on connect and destroy. - Adds unit tests for `FutureErrorHandling.handleError` (including `test` predicate filtering) and regression tests verifying that socket stream and done future errors do not crash the tool. Fixes https://github.com/flutter/flutter/issues/192935 ## 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. | 5 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[tool] Migrate DevFS to modular dependency injection (#192836) ## Summary Part 23a of the modular dependency injection migration. * Migrates `DevFS` and `DevFSContent` to modular dependency injection, removing ambient `devFSConfig` and `HttpClientFactory` context lookups. * Injects explicit `Config?` and `DevFSConfig?` parameters into `DevFS` and `DevFSFileContent`. Fork diff: https://github.com/bkonyi/flutter/compare/master...di/23a-devfs Part of https://github.com/flutter/flutter/issues/188471 | 17 天前 | |
[flutter_tools] Implement Device Service extension and flutter devices integration (#192126) Implement `DeviceService` and integrate it with `FlutterDeviceManager` to support dynamic custom devices from tool extensions. - Define `Category` (`web`, `desktop`, `mobile`, `other`) and `TargetDevice` in `package:flutter_tools_core`. - Define the `DeviceService` extension service interface (`device.getDevices` and `device.isSupportedForProject`) in `package:flutter_tools_extension`. - Implement `LinuxDeviceService` in `package:flutter_tools_extension_linux_prototype`. - Implement `ExtensionDevices`, `ExtensionDeviceClient`, and `ExtensionBackedDevice` in `packages/flutter_tools/lib/src/experimental/extension_device_manager.dart`, and update `Device.isSupportedForProject` to return `FutureOr<bool>`. - Bootstrap `ExtensionManager` in `ToolDependencies.bootstrap` and wire it into `FlutterDeviceManager`. - Add unit, hermetic, and integration test coverage across `flutter_tools_core`, `flutter_tools_extension_linux_prototype`, and `flutter_tools`. Part of https://github.com/flutter/flutter/issues/190692 --------- Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> | 2 天前 | |
Auto-format Framework (#160545) This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com> | 1 年前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Fix flutter doctor path validation for symlinked SDKs (#193006) When Flutter is installed via a symlink or directory junction (such as via Scoop on Windows), binaries found on `PATH` resolve to their target destination while `flutterRoot` was compared using its unresolved path. This caused `FlutterValidator` to issue bogus warnings that `flutter` and `dart` binaries were outside the Flutter SDK checkout. Resolve `flutterRoot` symbolically when verifying SDK binary containment, falling back to the unresolved path if resolution fails, while preserving the user-configured path for display and recommendations. Fixes https://github.com/flutter/flutter/issues/191936 ## 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] 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/ | 12 天前 | |
refactor(flutter_tools): clean up dead unreferenced declarations (#191163) Removes dead, unreferenced internal declarations across `packages/flutter_tools`. This is a **deterministic, tool-guided cleanup** performed using [`undead`](https://pub.dev/packages/undead) (whole-program AST reachability analysis). Because candidate declarations are identified through formal analyzer graph traversals rather than generative AI synthesis, there is **almost zero risk of AI hallucinations or speculative refactoring regressions**. --- ### 🔍 How `undead` Works & Non-Breaking Safety Guarantees Unlike basic lexical lints (`unused_element`, `unused_field`) which only detect file-private (`_`) identifiers within a single compilation unit, `undead` builds a comprehensive reachability graph starting from: 1. **Public API Entrypoints**: All exported root declarations in `lib/*.dart`. 2. **Executable Roots**: Binary/CLI command entrypoints. 3. **Test Suites**: Unit and integration test harnesses in `test/`. Any internal declaration under `lib/src/` with zero reachable paths from any entrypoint or test root is flagged as dead code. #### Verification & Non-Breaking Invariants * **Public API Preservation**: All public exports in `lib/` remain strictly untouched. * **Sealed Hierarchy Protection**: Subtypes of `sealed` classes are preserved to guarantee Dart 3 pattern-matching switch exhaustiveness. * **Framework Pragmas**: Entrypoints annotated with `@pragma('vm:entry-point')` are preserved. * **Regression Verification**: Verified clean via full `flutter_tools` static analysis (`dart analyze`) and passing local test suites (`dart test`) with zero behavioral drift. --- ### 📦 Removed Declarations Removes dead unreferenced declarations identified during the codebase reachability audit: - AndroidSdkNdkHelpers, kSupportedAbis, writeLocalProperties, conflictDetected - OverrideArtifacts, kSystemCodeSuccess, kSystemCodeDeviceFull - getNameForHostPlatform, getAotBuildDirectory, getFuchsiaBuildDirectory - kXcodeBuildScriptValueBuild, kXcodeBuildScriptValueEmbed, kXcodeBuildScriptValueAddToAppBuild - getNameForTargetPlatform, getTargetPlatformForName - verifyOutputDirectories, NoOpBuildTargets, _NoOpTarget - getDefaultApplicationKernelPath, DiscoveredApp, NoIdeValidator, ValidatorWithResult - flutterMacOSFrameworkDir, OSArchitectures, _osTargets, kLuciEnvName - loadDwdsDirectory, generateMethodArguments, L10nMissingPlaceholderException - HeaderGenerator, ConstructorGenerator, kExplicitlyExcludedPackages - generateDDCBootstrapScript, parseVersionForWindows, EdgeValidator - PreviewProperty, ParsedUnitResultExtension, SourceExtension, daemon id Also removed unused imports left behind by deletions. --- ### 🤖 Tool Provenance & Reproduction Dead code detection and reachability analysis performed with [`undead`](https://pub.dev/packages/undead) (`v0.1.0`). To reproduce or re-run this reachability audit locally: ```bash cd packages/flutter_tools && dart run undead@ ``` | 1 个月前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Remove the accessibility evaluations feature flag (#192266) Removes the `isAccessibilityEvaluationsEnabled` runtime flag and `enable-accessibility-evaluations` tool feature, as flutter/flutter#32057 is already fixed by https://github.com/flutter/flutter/pull/181672, it now supports a11y evaluation not only on debug mode. ## Pre-launch Checklist - [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [ ] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [ ] 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 in-code documentation (doc comments with `///`). - [ ] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [ ] 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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 23 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Implement Device Service extension and flutter devices integration (#192126) Implement `DeviceService` and integrate it with `FlutterDeviceManager` to support dynamic custom devices from tool extensions. - Define `Category` (`web`, `desktop`, `mobile`, `other`) and `TargetDevice` in `package:flutter_tools_core`. - Define the `DeviceService` extension service interface (`device.getDevices` and `device.isSupportedForProject`) in `package:flutter_tools_extension`. - Implement `LinuxDeviceService` in `package:flutter_tools_extension_linux_prototype`. - Implement `ExtensionDevices`, `ExtensionDeviceClient`, and `ExtensionBackedDevice` in `packages/flutter_tools/lib/src/experimental/extension_device_manager.dart`, and update `Device.isSupportedForProject` to return `FutureOr<bool>`. - Bootstrap `ExtensionManager` in `ToolDependencies.bootstrap` and wire it into `FlutterDeviceManager`. - Add unit, hermetic, and integration test coverage across `flutter_tools_core`, `flutter_tools_extension_linux_prototype`, and `flutter_tools`. Part of https://github.com/flutter/flutter/issues/190692 --------- Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com> | 2 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Fix Use dependency graph to determine plugin initialization order (#191591) Fixes #99153 ## Summary # Flutter Issue Investigation: #99153 **Issue**: [#99153 - Use dependency graph to determine plugin initialization order](https://github.com/flutter/flutter/issues/99153) **Status**: Resolved **Scope**: `packages/flutter_tools` --- ## 1. Overview and Problem Statement When Flutter generates native plugin registrants (such as `GeneratedPluginRegistrant.java`, `GeneratedPluginRegistrant.m`, `generated_plugin_registrant.cc`, `web_plugin_registrant.dart`) and plugin dependency files (`.flutter-plugins-dependencies`), plugins were previously sorted purely alphabetically by plugin name (`left.name.compareTo(right.name)`). While alphabetical sorting ensured deterministic registrant generation, it did not take into account dependencies between plugins. If `plugin_a` depended on `plugin_z`, `plugin_a` would be registered and initialized before `plugin_z`, leading to potential initialization order bugs when a plugin depends on services or state initialized by another plugin. --- ## 2. Root Cause Analysis 1. **`findPlugins` & `refreshPluginsList`**: - `findPlugins` collected plugins in arbitrary traversal order from `computeTransitiveDependencies`. - `refreshPluginsList` sorted `plugins` alphabetically (`plugins.sort((Plugin left, Plugin right) => left.name.compareTo(right.name));`). 2. **`_resolvePluginImplementationsByPlatform`**: - Platform implementation candidate resolution re-sorted the platform-specific plugins alphabetically (`pluginImplementations.sort((Plugin left, Plugin right) => left.name.compareTo(right.name));`), overriding any topological order. 3. **`_writeFlutterPluginsList` and Registrant Generators**: - Iterated over the sorted lists and wrote registrations directly to disk. --- ## 3. Solution & Architecture ### Topological Sort (`sortByDependencies`) Implemented `sortByDependencies(Iterable<Plugin> plugins)` in `packages/flutter_tools/lib/src/flutter_plugins.dart`: - Uses Kahn's algorithm for topological sorting: 1. Computes in-degree for all plugins within the set of active plugins based on `plugin.dependencies`. Non-plugin dependencies (e.g., `flutter`, `meta`, external packages) are filtered out. 2. Seeds available queue with plugins having 0 in-degree, sorted alphabetically. 3. Dequeues plugins and decrements dependent plugins' in-degrees. When in-degree reaches 0, dependent plugins are added to the available queue (alphabetically sorted). 4. If a dependency cycle occurs, the algorithm breaks cycles deterministically by selecting the unplaced plugin with the smallest in-degree, breaking ties alphabetically. 5. For independent plugins with no dependency relationships, preserves alphabetical sorting. ### Call Site Updates - Updated `findPlugins` to return `sortByDependencies(plugins)`. - Updated `_resolvePluginImplementationsByPlatform` to sort platform implementations using `sortByDependencies(pluginResolution.values)`. - Removed redundant `plugins.sort` in `refreshPluginsList` and `packages/flutter_tools/lib/src/commands/build_swift_package.dart`. --- ## 4. Automated Testing and Verification ### Regression & Unit Tests Added - **`Refreshing the plugin list sorts plugins by dependency order`** in `packages/flutter_tools/test/general.shard/plugins_test.dart`. - **`group('sortByDependencies')`** in `plugins_test.dart`: - `returns empty list when input is empty` - `returns single element list as-is` - `sorts independent plugins alphabetically` - `sorts direct dependency before dependent plugin` - `sorts multi-level linear dependency chain` - `sorts diamond dependency graph` - `ignores non-plugin dependencies` - `handles dependency cycle deterministically without throwing or hanging` - **Registrant Injection Tests**: - `Generated Linux plugin files sorts by dependency order` - `Generated Windows plugin files sorts by dependency order` ### Verification Results - `dart format` cleanly applied across all modified files. - `dart analyze --fatal-infos packages/flutter_tools`: Passed with **0 errors, 0 warnings, 0 infos**. - `dart test packages/flutter_tools/test/general.shard/plugins_test.dart`: All **97 tests passing**. ## Verification - Regression test included and verified. | 3 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Fix version cache poisoning from git environment variables (#186595) Fixes #180421 Fixes #178160 Addresses issues where running flutter inside git hooks would cause the tool to incorrectly cache version info from the user's project instead of the SDK. 1. Added environment filtering to strip inherited GIT_* variables from SDK-related git commands, ensuring accurate version detection. 2. Refined FlutterVersion factory to only fall back to git if the cached version looks suspicious (e.g. unknown channel), avoiding startup latency for healthy installations. 3. Updated ensureVersionFile to proactively sync the cache when called. 4. Improved flutter doctor messages with hints on how to reset a corrupted version cache. 5. Updated Git.logSync to support passing custom environments. --------- Co-authored-by: Ben Konyi <bkonyi@google.com> | 4 个月前 | |
[ Tool ] Remove legacy analytics code (#184994) `package:usage` has been replaced with package:unified_analytics and can now be removed from the tool. | 4 个月前 | |
Add data assets (#174685) Refiling of #169273 (reverted in https://github.com/flutter/flutter/pull/170034), which is a refiling of #164094, which itself is a rebase of #159675. This PR adds bundling support for the experimental dart data asset feature: Dart packages with hooks can now emit data assets which the flutter tool will bundle. It relies on flutter's existing asset bundling mechanism (e.g. entries in AssetManifest.json, DevFS syncing in reload/restart, ...). The support is added under an experimental flag (similar to the existing native assets experimental flag). Also, kNativeAssets is removed to also bundle data assets on flutter build bundle. The chrome sandbox is disabled as per #165664. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [x] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [x] I followed the [breaking change policy] and added [Data Driven Fixes] where supported. - [x] All existing and new tests are passing. If you need help, consider asking for advice on the #hackers-new channel on [Discord]. <!-- Links --> [Contributor Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview [Tree Hygiene]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md [test-exempt]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#tests [Flutter Style Guide]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md [Features we expect every widget to implement]: https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md#features-we-expect-every-widget-to-implement [CLA]: https://cla.developers.google.com/ [flutter/tests]: https://github.com/flutter/tests [breaking change policy]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#handling-breaking-changes [Discord]: https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md [Data Driven Fixes]: https://github.com/flutter/flutter/blob/main/docs/contributing/Data-driven-Fixes.md | 1 年前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Bundle data assets from hooks in flutter test (#193435) Previously, `flutter test` ran native assets hooks via `TestCompilerNativeAssetsBuilder.build(buildInfo)`, which only returned the `NativeAssetsManifest.json` URI and discarded the `FlutterHookResult` containing hook-generated data assets. Bug: * https://github.com/flutter/flutter/issues/146264 ### Changes - Add `buildWithHookResult` to `TestCompilerNativeAssetsBuilder` returning both `nativeAssetsManifest` and `flutterHookResult`. - Pass `flutterHookResult` to `_buildTestAsset` / `assetBundle.build` in `TestCommand`. - Update `TestCommand._needsRebuild` to check if bundled asset files exist on disk, guard `pub.existsSync()`, and check `flutterHookResult.dependencies` modification timestamps. - Add a hermetic test in `test_test.dart` verifying that `flutter test` bundles data assets from hooks into `build/unit_test_assets`. ### PR Stack | # | PR | Branch | Commit | | :-: | :--- | :--- | :--- | | 1 | https://github.com/flutter/flutter/pull/193434 | `data-assets-empty-pubspec` | https://github.com/flutter/flutter/pull/193434/commits/62199c43cd6883c0e5ef766f4de6fa8a36256bf7 | | **2** | **👉 https://github.com/flutter/flutter/pull/193435 (this PR)** | `data-assets-flutter-test` | https://github.com/flutter/flutter/pull/193435/commits/390c757f9b6abcf19ffd4bfb08c16fba0c072c39 | | 3 | https://github.com/flutter/flutter/pull/193436 | `data-assets-dev-dependencies-release-test` | https://github.com/flutter/flutter/pull/193436/commits/cca04e98335d70bc58077a3b85a9124d7c6c275d | | 4 | https://github.com/flutter/flutter/pull/193437 | `data-assets-widget-preview` | https://github.com/flutter/flutter/pull/193437/commits/0a5a8e91fea1c72647b872f2d0e3ccfeaba30c21 | > **Note:** This PR is stacked on https://github.com/flutter/flutter/pull/193434. To review only this PR's diff before the base PR lands, view commit https://github.com/flutter/flutter/pull/193435/commits/390c757f9b6abcf19ffd4bfb08c16fba0c072c39. ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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. | 3 天前 | |
[flutter_tools] Cache pubspec reads and share PackageGraph/PackageConfig across workspace packages during pub get post-processing (#184528) In large pub workspaces, `flutter pub get` post-processing was reading `pubspec.yaml` files redundantly — once per transitive dependency per workspace root package (O(N×deps) disk reads). On a repo with 500+ plugin packages this caused `flutter pub get` to take ~10 minutes. This PR fixes that with three changes: **1. PubspecCache** — `buildPubspecCache()` reads every package's `pubspec.yaml` once and caches it by root URI. All workspace root packages share this cache during `findPlugins` / `computeTransitiveDependencies`, reducing pubspec reads from O(N×deps) to O(deps). **2. Shared PackageGraph and PackageConfig** — both are loaded once from the workspace root and passed down through `regeneratePlatformSpecificTooling` → `refreshPluginsList` / `injectPlugins` → `findPlugins` / `computeTransitiveDependencies`. A `useSharedResources` guard ensures shared caches are only used when the project is actually a member of the workspace graph (non-workspace projects and example apps that are not workspace roots fall back to loading their own resources). **3. Pool-based concurrency** — workspace root packages are processed concurrently using `package:pool`, capped to `platform.numberOfProcessors`, matching the pattern in `build_system.dart`. Tested changes on the https://github.com/aNOOBisTheGod/too-long-post-pub-get Before: 40-60 seconds After: ~8 seconds Also tested on our production application Before: 6-10 mins After: ~40 seconds Fixes #184515 | 5 个月前 | |
Print warnings on Intel Macs / targeting Intel Macs (#188835) Fixes #188333: add a warning to nudge developers to use the new feature flag if they're on xcode 27+. Fixes #188330: one-time warning on Intel Mac ## Pre-launch Checklist - [ ] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [ ] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [ ] 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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 | 2 个月前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
flutter_tools: validate plugin identifiers before generating registrant code (#190462) `AndroidPlugin`/`IOSPlugin`/`MacOSPlugin`/`WindowsPlugin`/`LinuxPlugin.fromYaml` (`packages/flutter_tools/lib/src/platform_plugins.dart`) read `package`, `pluginClass`, and `dartPluginClass` straight out of a plugin's own `pubspec.yaml`, validated only as "must be a string" (see `plugins.dart`'s `validate()` methods). `flutter_plugins.dart` then mustache-renders the `GeneratedPluginRegistrant` source for each platform with these values substituted directly, e.g. `flutterEngine.getPlugins().add(new {{package}}.{{class}}());`, with no escaping at all (`MustacheTemplateRenderer` defaults to `htmlEscapeValues: false`). A `pluginClass` such as `Evil(); some.malicious.Payload.run(flutterEngine); //` therefore produces a raw, independently-executing statement in the generated file, which gets compiled into every app that depends on the plugin the next time it runs `flutter build`/`flutter run`. Confirmed by rendering the actual `_androidPluginRegistryTemplateNewEmbedding` template with the real `mustache_template` package: ``` flutterEngine.getPlugins().add(new com.example.evil.Evil(); com.example.evil.Payload.run(flutterEngine); //()); ``` The injected `Payload.run(flutterEngine);` lands as its own statement, not as part of the class name. Same shape applies to iOS/macOS Swift, Windows/Linux C++, and the Dart-only plugin registrant (`dartPluginClass`/`dartFileName`, the latter interpolated raw into a Dart `import '...'` string, so a value containing `'` breaks out of that too). Adds `validatePluginIdentifier` (rejects anything that isn't a valid, optionally dot-separated identifier) and `validateDartFileName` (rejects anything that isn't a safe relative `*.dart` path), called from every platform's `fromYaml`. Existing plugin fixtures across `android_plugin_test.dart`, `plugins_test.dart`, `dart_plugin_test.dart`, `plugin_parsing_test.dart`, and the macOS/Swift-package-manager suites (315 tests total) all continue to pass unchanged. Adds `platform_plugins_test.dart` covering the injection payload for all five platforms plus the `dartFileName` import-string-breakout case (10 new tests). Co-authored-by: Ben Konyi <bkonyi@google.com> | 1 个月前 | |
Auto-format Framework (#160545) This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com> | 1 年前 | |
[tool] Migrate CreateCommand to modular dependency injection (#190785) ## Summary Part 18 of the modular dependency injection migration. * Migrates `CreateCommand`, `CreateBase`, and `WidgetPreviewCommand` to modular constructor dependency injection with zero fallbacks: - `CreateCommand({required ToolContext toolContext, required this.androidContext, required this.appleContext, ExtensionTemplateManager? extensionTemplateManager, required TemplateRenderer templateRenderer, bool verboseHelp = false})` - `WidgetPreviewCommand({required ShutdownHooks shutdownHooks, required ToolContext toolContext, required bool verboseHelp, ...})` * Requires non-nullable context objects (`ToolContext`, `AndroidContext`, `AppleContext`) and `TemplateRenderer`, eliminating individual constructor fallback parameters and ambient `globals.*`. * Migrates unit tests in `packages/flutter_tools/test/commands.shard/hermetic/create_usage_test.dart` to hermetic `testWithoutContext`. Part of https://github.com/flutter/flutter/issues/188471 | 19 天前 | |
Wraps all `git` executions in a `Git(...).*`, use `*=noglob` on Windows (#172495) Closes https://github.com/flutter/flutter/issues/74165. The original issue called for, on Windows, telling `CYGWIN` to use `=noglob`, to work around some git operation errors that happen when using non-native Git. There ... was no great way to do this with the existing codebase without, IMO, adding lots of confusing code. So, I refactored all the calls of: - before: `processUtils.<method>(['git', ...args], ...params)` - after: `git.<method>([...args], ...params)` ... and implicitly add the new environment variables, if `Platform.isWindows`. Did some minor test cleanup and process execution cleanup while I was at it. | 1 年前 | |
Auto-format Framework (#160545) This auto-formats all *.dart files in the repository outside of the `engine` subdirectory and enforces that these files stay formatted with a presubmit check. **Reviewers:** Please carefully review all the commits except for the one titled "formatted". The "formatted" commit was auto-generated by running `dev/tools/format.sh -a -f`. The other commits were hand-crafted to prepare the repo for the formatting change. I recommend reviewing the commits one-by-one via the "Commits" tab and avoiding Github's "Files changed" tab as it will likely slow down your browser because of the size of this PR. --------- Co-authored-by: Kate Lovett <katelovett@google.com> Co-authored-by: LongCatIsLooong <31859944+LongCatIsLooong@users.noreply.github.com> | 1 年前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Implement Diagnostics extension slice and doctor integration (#191162) ## Description This PR implements Step 3 of Flutter Tools Extensibility: the Diagnostics extension slice and doctor integration. ### Architectural Overview 1. **`package:flutter_tools_core`**: - Defines core, platform-agnostic diagnostic models: `ValidationType`, `ValidationMessage`, and `ValidationResult`. 2. **`package:flutter_tools_extension`**: - Defines the `DiagnosticsExtension` interface and service contract (`getTitle()`, `runDiagnostics()`). 3. **`package:flutter_tools_extension_linux_prototype`**: - Implements `LinuxExtensionDiagnostics` validator in the Linux prototype extension. 4. **`packages/flutter_tools`**: - Implements `DiagnosticsExtensionClient` to query isolate extensions over RPC. - Introduces `ExtensionDoctorValidator` which adapts extension diagnostic results into Flutter tool `DoctorValidator` instances. - Wires `ExtensionDoctorValidator` into `Doctor.validators` via `ExtensionManager`. - Deprecates duplicate diagnostic types in `doctor_validator.dart` in favor of `package:flutter_tools_core` exports. ## Related Issues Part of https://github.com/flutter/flutter/issues/190692 ## Tests - Added `packages/flutter_tools/packages/flutter_tools_core/test/diagnostics_test.dart` - Added `packages/flutter_tools/packages/flutter_tools_extension_linux_prototype/test/linux_diagnostics_test.dart` - Added `packages/flutter_tools/test/general.shard/extension_protocol/diagnostics_service_test.dart` - Added `packages/flutter_tools/test/commands.shard/hermetic/tool_extensions_integration_test.dart` - Added `packages/flutter_tools/test/integration.shard/tool_extensions_test.dart` - Updated existing doctor and validator tests in `commands.shard` and `general.shard`. | 1 个月前 | |
[flutter_tools] Guard socket streams and done futures against socket reset errors (#192941) When remote peers abruptly terminate or reset network connections, POSIX event handlers (such as epoll) trigger low-level socket reset errors (`SocketException: Error event raised in event handler : error condition has been reset, port = 0`) via `_NativeSocket.multiplex`. If these socket error events occur on streams or sink `done` futures that lack error handlers, or when adding to/closing sinks in an error state, the unhandled exception escapes into the Zone and causes Flutter tool crashes. This change: - Introduces `FutureErrorHandling<T>` in `packages/flutter_tools/lib/src/base/common.dart` to provide a reusable `.handleError(...)` extension on `Future` for background futures without requiring empty `(_) {}` callbacks. - Guards `createVmServiceDelegate` channel streams, sink `done` futures, and sink operations against `SocketException`. - Guards `DaemonStreams.fromSocket`, `DaemonStreams.connect`, and daemon server `socket.done` and `socket.addStream` futures. - Adds `onError` handling to `ProxiedPortForwarder` forwarded socket streams. - Adds `onError` handling to `ResidentRunner` log streams. - Adds error handling to `AndroidConsole` socket `done` future on connect and destroy. - Adds unit tests for `FutureErrorHandling.handleError` (including `test` predicate filtering) and regression tests verifying that socket stream and done future errors do not crash the tool. Fixes https://github.com/flutter/flutter/issues/192935 ## 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. | 5 天前 | |
Refactor `FlutterDevice.connect` and VM service discovery (#191221) ## Description Refactors `FlutterDevice.connect` in `packages/flutter_tools` to accept a single resolved `Uri` instead of a `Stream<Uri>`. - Replaces `FlutterDevice.vmServiceUris` with `Future<Uri>? vmServiceUri`. - Eliminates stream subscription, `_isListeningForVmServiceUri`, and stream state management from `resident_runner.dart`. - Moves single VM service candidate resolution into `VMServiceDiscoveryForAttach.firstValidUri` and `AttachCommand._discoverVmService`. - Updates `attach.dart`, `run_cold.dart`, `run_hot.dart`, and associated test suites. ## Tests - `packages/flutter_tools/test/commands.shard/hermetic/attach_test.dart` - `packages/flutter_tools/test/general.shard/cold_test.dart` - `packages/flutter_tools/test/general.shard/device_vm_service_discovery_for_attach_test.dart` - `packages/flutter_tools/test/general.shard/resident_runner_test.dart` - `packages/flutter_tools/test/general.shard/resident_web_runner_test.dart` - `packages/flutter_tools/test/general.shard/run_hot_test.dart` - `packages/flutter_tools/test/general.shard/proxied_devices/proxied_devices_test.dart` | 1 个月前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
refactor(flutter_tools): clean up dead unreferenced declarations (#191163) Removes dead, unreferenced internal declarations across `packages/flutter_tools`. This is a **deterministic, tool-guided cleanup** performed using [`undead`](https://pub.dev/packages/undead) (whole-program AST reachability analysis). Because candidate declarations are identified through formal analyzer graph traversals rather than generative AI synthesis, there is **almost zero risk of AI hallucinations or speculative refactoring regressions**. --- ### 🔍 How `undead` Works & Non-Breaking Safety Guarantees Unlike basic lexical lints (`unused_element`, `unused_field`) which only detect file-private (`_`) identifiers within a single compilation unit, `undead` builds a comprehensive reachability graph starting from: 1. **Public API Entrypoints**: All exported root declarations in `lib/*.dart`. 2. **Executable Roots**: Binary/CLI command entrypoints. 3. **Test Suites**: Unit and integration test harnesses in `test/`. Any internal declaration under `lib/src/` with zero reachable paths from any entrypoint or test root is flagged as dead code. #### Verification & Non-Breaking Invariants * **Public API Preservation**: All public exports in `lib/` remain strictly untouched. * **Sealed Hierarchy Protection**: Subtypes of `sealed` classes are preserved to guarantee Dart 3 pattern-matching switch exhaustiveness. * **Framework Pragmas**: Entrypoints annotated with `@pragma('vm:entry-point')` are preserved. * **Regression Verification**: Verified clean via full `flutter_tools` static analysis (`dart analyze`) and passing local test suites (`dart test`) with zero behavioral drift. --- ### 📦 Removed Declarations Removes dead unreferenced declarations identified during the codebase reachability audit: - AndroidSdkNdkHelpers, kSupportedAbis, writeLocalProperties, conflictDetected - OverrideArtifacts, kSystemCodeSuccess, kSystemCodeDeviceFull - getNameForHostPlatform, getAotBuildDirectory, getFuchsiaBuildDirectory - kXcodeBuildScriptValueBuild, kXcodeBuildScriptValueEmbed, kXcodeBuildScriptValueAddToAppBuild - getNameForTargetPlatform, getTargetPlatformForName - verifyOutputDirectories, NoOpBuildTargets, _NoOpTarget - getDefaultApplicationKernelPath, DiscoveredApp, NoIdeValidator, ValidatorWithResult - flutterMacOSFrameworkDir, OSArchitectures, _osTargets, kLuciEnvName - loadDwdsDirectory, generateMethodArguments, L10nMissingPlaceholderException - HeaderGenerator, ConstructorGenerator, kExplicitlyExcludedPackages - generateDDCBootstrapScript, parseVersionForWindows, EdgeValidator - PreviewProperty, ParsedUnitResultExtension, SourceExtension, daemon id Also removed unused imports left behind by deletions. --- ### 🤖 Tool Provenance & Reproduction Dead code detection and reachability analysis performed with [`undead`](https://pub.dev/packages/undead) (`v0.1.0`). To reproduce or re-run this reachability audit locally: ```bash cd packages/flutter_tools && dart run undead@ ``` | 1 个月前 | |
Bump Dart to 3.13, reformat, re-enable formatting check (#192649) Fixes https://github.com/flutter/flutter/issues/191628 Fixes https://github.com/flutter/flutter/issues/187204 Bumps Dart across the repo to 3.13 and reformats the repo The CI formatting check is also re-enabled with this change. #### Deviating pubspec.yaml Packages The following packages deviate from the standard repository Dart SDK constraint (^3.11.0-0 before the bump). Some of these cannot cleanly downgrade. Changing them is considered out of scope. Some of them may also pertain to active work that requires later versions of Dart. 1. ios_universal_link - Full File Path: dev/integration_tests/ios_universal_link/pubspec.yaml - Dart SDK Version: ^3.14.0-53.0.dev - Author: @okorohelijah - Commit: 2a071e20324 (2026-09-04) - PR / Message: Add iOS Universal Link integration test (Simulator) (#191443) 2. flutter_analyzer_plugin - Full File Path: dev/flutter_analyzer_plugin/pubspec.yaml - Dart SDK Version: ^3.7.0 - Author: @bkonyi - Commit: ae9963e8024 (2026-08-12) - PR / Message: [analysis] Reland "Added initial implementation of the flutter_analyzer_plugin (#175679)" (#191022) 3. widget_preview_scaffold - Full File Path: dev/integration_tests/widget_preview_scaffold/pubspec.yaml - Dart SDK Version: ^3.12.0 - Author: @polina-c - Commit: 3ca99c34868 (2026-05-15) - PR / Message: [ Widget Preview ] Improve zoom behavior and add zoom slider (#186422) 4. hybrid_platform_views - Full File Path: dev/integration_tests/hybrid_android_views/pubspec.yaml - Dart SDK Version: ^3.7.0-0 - Author: @andrewkolos - Commit: 112f1704d1e (2026-03-09) - PR / Message: Reland hybrid views test (#181336) 5. record_use_test_app - Full File Path: dev/integration_tests/record_use_test_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 6. record_use_test_package - Full File Path: dev/integration_tests/record_use_test_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: eb6acab7f31 (2026-04-09) - PR / Message: [record_use] Add experimental flag and test project (#184719) 7. data_asset_app - Full File Path: dev/integration_tests/data_asset_app/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) 8. data_asset_package - Full File Path: dev/integration_tests/data_asset_package/pubspec.yaml - Dart SDK Version: >=3.5.0-0 <4.0.0 - Author: @dcharkes - Commit: a0924c76b0f (2026-04-07) - PR / Message: Reland "[data_assets] Cleanup tests" (#184714) ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [x] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 22 天前 | |
[flutter_tools] Guard socket streams and done futures against socket reset errors (#192941) When remote peers abruptly terminate or reset network connections, POSIX event handlers (such as epoll) trigger low-level socket reset errors (`SocketException: Error event raised in event handler : error condition has been reset, port = 0`) via `_NativeSocket.multiplex`. If these socket error events occur on streams or sink `done` futures that lack error handlers, or when adding to/closing sinks in an error state, the unhandled exception escapes into the Zone and causes Flutter tool crashes. This change: - Introduces `FutureErrorHandling<T>` in `packages/flutter_tools/lib/src/base/common.dart` to provide a reusable `.handleError(...)` extension on `Future` for background futures without requiring empty `(_) {}` callbacks. - Guards `createVmServiceDelegate` channel streams, sink `done` futures, and sink operations against `SocketException`. - Guards `DaemonStreams.fromSocket`, `DaemonStreams.connect`, and daemon server `socket.done` and `socket.addStream` futures. - Adds `onError` handling to `ProxiedPortForwarder` forwarded socket streams. - Adds `onError` handling to `ResidentRunner` log streams. - Adds error handling to `AndroidConsole` socket `done` future on connect and destroy. - Adds unit tests for `FutureErrorHandling.handleError` (including `test` predicate filtering) and regression tests verifying that socket stream and done future errors do not crash the tool. Fixes https://github.com/flutter/flutter/issues/192935 ## 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. | 5 天前 | |
[flutter_tools] Add `use_null_aware_elements` lint rule and fix new warnings (#193215) This change adds `use_null_aware_elements` lint rule and fixes new warnings ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [AI contribution guidelines] and understand my responsibilities, or I am not using AI tools. - [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 in-code documentation (doc comments with `///`). - [ ] If this PR introduces a new feature or capability, I created and linked a website documentation issue or PR in [flutter/website] (or verified none is needed). - [ ] 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]. If this change needs to override an active code freeze, provide a comment explaining why. The code freeze workflow can be overridden by code reviewers. See pinned issues for any active code freezes with guidance. **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 [AI contribution guidelines]: https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#ai-contribution-guidelines [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 [flutter/website]: https://github.com/flutter/website [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 | 9 天前 | |
[tool] Migrate Upgrade, Downgrade, and UpdatePackages commands to modular dependency injection (#190787) ## Summary Part 19 of the modular dependency injection migration. Stacked on PR 19a ([#192460](https://github.com/flutter/flutter/pull/192460)). * Migrates `UpgradeCommand`, `DowngradeCommand`, and `UpdatePackagesCommand` to modular constructor dependency injection: - `UpgradeCommand({required ToolContext toolContext, required bool verboseHelp, UpgradeCommandRunner? commandRunner})` - `DowngradeCommand({required ToolContext toolContext, required bool verboseHelp})` - `UpdatePackagesCommand({required ToolContext toolContext, required bool verboseHelp})` * Requires `platform` in `FlutterVersion.fromRevision` and eliminates `globals.logger` references. * Migrates unit tests in `test/commands.shard/hermetic/upgrade_test.dart`, `downgrade_test.dart`, and `update_packages_test.dart` to hermetic `testWithoutContext`. Part of https://github.com/flutter/flutter/issues/188471 | 23 天前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 2 天前 | ||
| 5 天前 | ||
| 3 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 22 天前 | ||
| 2 天前 | ||
| 22 天前 | ||
| 17 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 13 天前 | ||
| 1 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 9 天前 | ||
| 5 天前 | ||
| 22 天前 | ||
| 2 天前 | ||
| 4 天前 | ||
| 22 天前 | ||
| 1 天前 | ||
| 2 天前 | ||
| 11 天前 | ||
| 1 年前 | ||
| 6 天前 | ||
| 6 天前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 19 天前 | ||
| 22 天前 | ||
| 3 个月前 | ||
| 1 年前 | ||
| 4 天前 | ||
| 3 天前 | ||
| 22 天前 | ||
| 5 天前 | ||
| 22 天前 | ||
| 17 天前 | ||
| 2 天前 | ||
| 1 年前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 12 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 23 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 2 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 3 天前 | ||
| 22 天前 | ||
| 4 个月前 | ||
| 4 个月前 | ||
| 1 年前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 3 天前 | ||
| 5 个月前 | ||
| 2 个月前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 1 年前 | ||
| 19 天前 | ||
| 1 年前 | ||
| 1 年前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 5 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 22 天前 | ||
| 1 个月前 | ||
| 22 天前 | ||
| 5 天前 | ||
| 9 天前 | ||
| 23 天前 |