Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: flutter/packages
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 3f34a6f7a79b
Choose a base ref
...
head repository: flutter/packages
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 1df844794f6f
Choose a head ref
  • 10 commits
  • 57 files changed
  • 9 contributors

Commits on Nov 2, 2026

  1. [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.
    mmohankrishna-lab authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    a378299 View commit details
    Browse the repository at this point in the history
  2. [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.
    flutter-zl authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    be64cac View commit details
    Browse the repository at this point in the history
  3. [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)
    francisrath authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    35a1e60 View commit details
    Browse the repository at this point in the history
  4. [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.
    mdebbar authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    176df83 View commit details
    Browse the repository at this point in the history
  5. [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.
    nurullahturkoglu authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    f895ad5 View commit details
    Browse the repository at this point in the history
  6. [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.
    flutter-zl authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    cc93a31 View commit details
    Browse the repository at this point in the history
  7. [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
    mohamedalsamrai authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    30d67e6 View commit details
    Browse the repository at this point in the history
  8. [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.
    chunhtai authored Nov 2, 2026
    Configuration menu
    Copy the full SHA
    1cdc73e View commit details
    Browse the repository at this point in the history

Commits on Nov 3, 2026

  1. [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.
    elliette authored Nov 3, 2026
    Configuration menu
    Copy the full SHA
    51c71be View commit details
    Browse the repository at this point in the history
  2. [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.
    stuartmorgan authored Nov 3, 2026
    Configuration menu
    Copy the full SHA
    1df8447 View commit details
    Browse the repository at this point in the history
Loading