Repository navigation
Comparing changes
Open a pull request
base repository: flutter/packages
base: 3f34a6f7a79b
head repository: flutter/packages
compare: 1df844794f6f
- 10 commits
- 57 files changed
- 9 contributors
Commits on Nov 2, 2026
-
[pigeon] Fix race in event channel handler removal integration test (#…
…13528) **This PR fixes the tree.** `Linux_android custom_package_tests master` is failing on `main` (all 3 attempts of [#4084](https://ci.chromium.org/p/flutter/builders/prod/Linux_android%20custom_package_tests%20master/4084)) in the Pigeon integration test `event channels handle multiple instances`: ``` The following MissingPluginException was thrown while de-activating platform stream on channel dev.flutter.pigeon.pigeon_integration_tests.EventChannelMethods.streamConsistentNumbers.1: MissingPluginException(No implementation found for method cancel on channel dev.flutter.pigeon.pigeon_integration_tests.EventChannelMethods.streamConsistentNumbers.1) ``` ### Cause The test plugin unregisters the stream handler for instance `"1"` (to exercise event channel unregistration, added in #13438) immediately after calling `endOfStream()`. On the Dart side, the end of the stream closes the `EventChannel`'s broadcast stream, which then sends a `cancel` method call back on the same channel. If the handler has already been removed by the time that `cancel` call arrives, it fails with a `MissingPluginException`, which fails the test. Whether it fails depends on timing, so it shows up as a flake. ### Fix Unregister the handler from the stream handler's `onCancel` instead, i.e. only after the `cancel` call has been received, in both the Kotlin (Android) and Swift (iOS/macOS) test plugins. The generated Pigeon stream handler wrappers already forward the platform `onCancel` to the user handler, so no generator or generated-code changes are needed. The test still exercises unregistration; it just no longer races with the channel teardown. This only changes test plugin code under `platform_tests/`, so there is no change to the published package. ### Testing On an Android emulator (Pixel 9a), running only `event channels handle multiple instances`: | | Runs | Failures (`MissingPluginException` on `cancel`) | |---|---|---| | Without this fix (`main`) | 5 | 2 | | With this fix | 10 | 0 | The full `android_kotlin_integration_tests` suite (680 tests) also passes with this fix, as do `dart_unittests` and `flutter_unittests`. The Swift change mirrors the Kotlin one and is covered by the iOS/macOS integration tests in CI. ### Related flutter/flutter#179154 tracks a different flake in the same test on macOS Swift (`Bad state: Cannot add new events after calling close`, i.e. an event sent after `endOfStream`). This PR does not address that one, and the macOS Swift skip is left in place. ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for a378299 - Browse repository at this point
Copy the full SHA a378299View commit details -
[VPAT] Keep a11y_assessments snackbars open until closed (#13451)
## Problem Six a11y_assessments demos show a `SnackBar` without an action. Those snack bars auto-dismiss after four seconds and offer no way to keep or reopen them, so users who need more time to read lose the message. ## Fix The snack bars set `persist: true` and `showCloseIcon: true`, so they stay until the user closes them. A snack bar with an action already persists by default. New tests on the snack bar, text button and app bar pages check that the snack bar outlasts its timeout and closes from the close icon. ## Demo Run the test app on web, open #/snack-bar, #/text-button or #/app-bar, show a snack bar, and wait more than four seconds.
Configuration menu - View commit details
-
Copy full SHA for be64cac - Browse repository at this point
Copy the full SHA be64cacView commit details -
[vector_graphics] Draw <text> under an RTL ambient direction (#13408)
`FlutterVectorGraphicsListener.onDrawText` lays out every paragraph at infinite width, using the ambient text direction. Under RTL the default `TextAlign.start` resolves to right, which puts each line at x = +∞, so no `<text>` is drawn at all. Shapes are unaffected. The listener already positions text itself (`x`, `dx`, and `text-anchor` through `maxIntrinsicWidth`), so this change sets `textAlign: TextAlign.left` on the paragraph. The text direction is still passed through, so bidi handling is unchanged. The new test renders `<text x="10">` under both directions and checks that ink is painted and starts at x ≈ 10. Without the fix, `rtl` paints no pixels. Fixes flutter/flutter#195182 ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Configuration menu - View commit details
-
Copy full SHA for 35a1e60 - Browse repository at this point
Copy the full SHA 35a1e60View commit details -
[tool] Let the OS pick a port for chromedriver and wait for exit (#13355
) Part of flutter/flutter#194313 `DriveExamplesCommand` starts `chromedriver --port=4444` inside the per-example loop without waiting for it to bind, and stops it with `chromedriver.kill()` without awaiting `chromedriver.exitCode`. When a package has multiple web examples (e.g. `google_maps_flutter_web`'s `example/latest` and `example/3-64`), the dying `chromedriver` from the first example still holds port `4444` when the next example spawns a new `chromedriver --port=4444`, so the second `chromedriver` fails to bind and exits immediately: ``` Unable to start a WebDriver session for web testing. Make sure you have the correct WebDriver server (e.g. chromedriver) running at 4444. ``` Example CI failures: - https://ci.chromium.org/b/8667405073082275745 - https://ci.chromium.org/b/8667406160854692097 - https://ci.chromium.org/b/8667756860257169345 This PR: - Launches `chromedriver --port=0` and waits for `started successfully on port (\d+)` on stdout before running `flutter drive --driver-port=<port>`. - Waits for `chromedriver.exitCode` after `chromedriver.kill()` in a `finally` block.
Configuration menu - View commit details
-
Copy full SHA for 176df83 - Browse repository at this point
Copy the full SHA 176df83View commit details -
[two_dimensional_scrollables] Fix pinned cells hit test (#13376)
This picks up #11777 by @beroso, which was closed while review comments were still open. It keeps the original commits and adds one on top. `TableView` hit-tested each cell against its full rect, so a regular cell scrolled under a trailing pinned row or column could take taps meant for the pinned cell, like a menu button in a pinned last column. The change from #11777 limits each cell's hit test to the viewport band of its own section (leading pinned, regular or trailing pinned) and accounts for the alignment offsets. My commit adds the tests asked for in review: reversed vertical axis, both axes reversed, a vertically reversed table with alignment, and RTL with directional alignment. It also disposes the scroll controllers in the hit test tests, which failed leak tracking once it was enabled for this package in #11653. The CHANGELOG entry uses the suggested wording. Without the change in `table.dart`, six of the twelve hit test tests fail, including the two new reversed-axis ones. The alignment and RTL tests pass either way, since they cover the alignment offset case raised in review. On Flutter 3.47.6 stable, `flutter test` passes for the package (182 tests) and the hit test group also passes with `--platform chrome`. `flutter analyze` and the repo tool's `validate` report no issues. Fixes flutter/flutter#186876 ## Pre-Review Checklist **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. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for f895ad5 - Browse repository at this point
Copy the full SHA f895ad5View commit details -
[VPAT] Fix contrast and reflow in three a11y_assessments demos (#13409)
## Problem Three a11y_assessments demos fail basic accessibility checks. The badge label is white on `Colors.green`, a 2.8:1 contrast ratio, and the drawer header is white on `Colors.blue`, 3.1:1, where small text needs 4.5:1. The expansion tile page lays its tiles out in a `Column`, so at a 320x256 viewport the second and third tiles overflow and cannot be reached. ## Fix The badge drops its hardcoded colors for the theme defaults, `error` on `onError`, and the drawer header uses the theme's `primary` and `onPrimary` pair. Both pairs meet 4.5:1 in all four of the app's themes. The expansion tile body becomes a `ListView`, so the page scrolls instead of overflowing. Each change has a regression test that failed before it. Only the test app changes, so no package version or CHANGELOG update is needed. ## Demo Run the test app on web. Check the badge and drawer header colors with the DevTools color picker, and the expansion tile page in device mode at 320x256.
Configuration menu - View commit details
-
Copy full SHA for cc93a31 - Browse repository at this point
Copy the full SHA cc93a31View commit details -
[material_ui] Use named uniforms instead of setFloat in InkSparkle (#…
…13445) Moves `InkSparkle` from the index-based `FragmentShader.setFloat` to the named uniform API (`getUniformFloat`, `getUniformVec2`, `getUniformVec4`), as part of deprecating `setFloat` (flutter/flutter#195357). `InkSparkle` looks up its 13 uniforms once, when it creates its shader, and sets them through those slots on each paint. Every uniform gets the same value as before, so there is no visual change. The named API is available in Flutter 3.47.0, the package's minimum, so the SDK constraint doesn't change. flutter/flutter#195358 covers both `InkSparkle` and `StretchEffect`. Since Material is frozen in flutter/flutter (flutter/flutter#188444), the work is split: `StretchEffect` is in flutter/flutter#195372, and `InkSparkle` is here. Part of flutter/flutter#195358 Version and CHANGELOG: adds a `pending_changelogs` entry with `version: patch`. Tests: this is a refactor with no semantic change, so I think it qualifies for a test exemption. It's covered by the existing golden tests in `test/ink_sparkle_test.dart`, and a misspelled uniform name would throw when those tests paint. ## Pre-Review Checklist
Configuration menu - View commit details
-
Copy full SHA for 30d67e6 - Browse repository at this point
Copy the full SHA 30d67e6View commit details -
[material_ui] Removes list semantics in some a11y_assessment samples (#…
…13257) fixes flutter/flutter#194237 fixes flutter/flutter#194248 Android creates collection info based on semantics child count and index, which causes talkback to announce the 1 of n when item is focused. ## Pre-Review Checklist **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. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 1cdc73e - Browse repository at this point
Copy the full SHA 1cdc73eView commit details
Commits on Nov 3, 2026
-
[material_ui] Temporarily exclude material_ui from non-Wasm web unit …
…tests (#13537) Temporarily disable `material_ui` web tests due to flutter/flutter#195700 flutter/flutter#193485 made each web test suite noticeably slower to load. That has pushed the master-channel `Linux_web web_dart_unit_test_shard_2 master` shard, which runs `material_ui`, over its 90-minute timeout. The timeouts are blocking the flutter/flutter → flutter/packages roller. This PR temporarily turns off the non-Wasm web unit tests for `material_ui` while we work on a long-term fix. ## Pre-Review Checklist **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. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 51c71be - Browse repository at this point
Copy the full SHA 51c71beView commit details -
[webview_flutter] Convert iOS impl example app to Swift (#13538)
Converts the remaining Obj-C code in `webview_flutter_ios/example/ios` to Swift: - Converts the AppDelegate to Swift, using the repo's standard boilerplate file - Removes `main.m` in favor of the annotation on the app delegate - Adds a bridging header to access the generated registrant - Converts the XCUITest to Swift The XCUITest remains disabled for flakiness, but I tested locally that I could see it pass locally with the skip removed. Missed piece of flutter/flutter#119110 ## Pre-Review Checklist [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling.
Configuration menu - View commit details
-
Copy full SHA for 1df8447 - Browse repository at this point
Copy the full SHA 1df8447View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 3f34a6f7a79b...1df844794f6f