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: d80c60eef034
Choose a base ref
...
head repository: flutter/packages
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 90102991452d
Choose a head ref
  • 9 commits
  • 281 files changed
  • 8 contributors

Commits on Jan 21, 2026

  1. [vector_graphics_compiler] Fix rgb/rgba color parsing to support mode…

    …rn CSS syntax (#10538)
    
    - Consolidate rgb() and rgba() parsing into single implementation
    - Add support for space-separated color values
    - Add support for percentage-based RGB values
    - Add support for slash (/) separator before alpha channel
    - Handle both comma and space delimiters
    - Add comprehensive test coverage for various color formats
    
    This PR solves flutter/flutter#179261
    
    ## 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.
    AlexDochioiu authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    c815a54 View commit details
    Browse the repository at this point in the history
  2. [dependabot]: Bump androidx.core:core from 1.13.1 to 1.17.0 in /packa…

    …ges/image_picker/image_picker_android/android (#10504)
    
    Bumps androidx.core:core from 1.13.1 to 1.17.0.
    
    [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=androidx.core:core&package-manager=gradle&previous-version=1.13.1&new-version=1.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
    
    You can trigger a rebase of this PR by commenting `@dependabot rebase`.
    
    ---
    
    <details>
    <summary>Dependabot commands and options</summary>
    <br />
    
    You can trigger Dependabot actions by commenting on this PR:
    - `@dependabot rebase` will rebase this PR
    - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
    - `@dependabot merge` will merge this PR after your CI passes on it
    - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
    - `@dependabot cancel merge` will cancel a previously requested merge and block automerging
    - `@dependabot reopen` will reopen this PR if it is closed
    - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
    - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    
    </details>
    
    > **Note**
    > Automatic rebases have been disabled on this pull request as it has been open for over 30 days.
    dependabot[bot] authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    cc37b19 View commit details
    Browse the repository at this point in the history
  3. feat(ios): add audio track selection support for AVFoundation (#10313)

    - Implemented getAudioTracks() method to retrieve available audio tracks from both HLS streams and regular video files
    
    AVFoundation Platform PR for : #9925 
    
    ## Pre-Review Checklist
    nateshmbhat authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    93c9395 View commit details
    Browse the repository at this point in the history
  4. [batch-release] Step3: Adds github action to create a PR to sync chan…

    …ges on the go_router release branch back to the main branch (#10393)
    
    issue: [#177110](flutter/flutter#177110) 
    Everytime something is pushed to the release branch, sync it back to the main branch. 
    
    ## 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.
    hannah-hyj authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    67f4678 View commit details
    Browse the repository at this point in the history
  5. [google_maps_flutter] Restructure iOS to prep for SwiftPM (#10839)

    This is the first step of implementing solution E.1b from https://flutter.dev/go/google-maps-spm-versioning. It does not yet introduce any of the package copies or code sharing, it just makes some structural changes to the current package to prepare for copying and sharing:
    - I reorganized all of the code to follow the SwiftPM layout. Even though this copy will never support SwiftPM, having the layout match will make code sharing much easier.
    - I eliminated the multi-example structure. The goal of the multiple examples was so that we could test the wrapper with each major version of the SDK it supports. However, we have never actually ended up needing SDK-specific tests, and since this variant of the package will never get a new version of the SDK (since it doesn't support SwiftPM) we don't need to test any new compatibility in the future. Given that, and the fact that we will be testing all of the shared code (which will be almost all of it) against the newer SDKs in the new packages that will follow shortly, the multiple examples in this package are no longer worth the complexity or the CI cost.
      - `ios14/` is the example that was kept (via moving it up a level to just be `example/`, so that we continue to have a test of SDK 8.4.
      - The example code that had been extracted to a shared local package has been inlined back into the example package.
    - I eliminated the modulemap. In theory we can keep it for CocoaPods only, but that makes things more complex. In practice, since we don't expect native imports of this plugin anyway, the test module division wasn't really doing anything important.
    - I changed the output filename for the Pigeon generation, so that we don't have to use full package-relative `#import`s to avoid build-time confusion with other `messages` files when building all of our plugins together.
    
    I also did a little bit of opportunistic cleanup in advance of copying, so that these changes won't need to be made N times later:
    - I converted the example app's native code from Obj-C to Swift. It now matches the example app code from the app-facing `google_maps_flutter`, which had been converted [a while ago](#9347). (I didn't fully re-create the example app with `flutter create` as in that other PR, I just replaced the code file and let Xcode create the bridging header).
    - I removed some deprecated code in a test file that we haven't needed since we started requiring 8.4 as a minimum SDK.
    - I changed a bunch of older style framework imports to use `@import` instead.
    
    Part of flutter/flutter#146920
    
    ## 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-g authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    a05d0b2 View commit details
    Browse the repository at this point in the history
  6. [in_app_purchase] Fix an issue causing StoreKit 2 transactions remain…

    … unfinished (#10656)
    
    The StoreKit 2 (iOS, MacOS) in_app_purchase backend causes ordinary client use (eg. the `in_app_purchase` example app) to leave transactions in an unfinished state, contrary to the StoreKit contract.
    
    This happens because StoreKit 2 purchase updates have `pendingCompletePurchase == false`, causing clients to not call `completePurchase` (flutter/flutter#180046). This in turn happens because purchase updates incorrectly have state `restored` instead of `purchased` (flutter/flutter#172434).
    
    Fix this by keeping track of which TransactionMessages are created in the restorePurchases code path to set the `restoring` field correctly. Previously it was set whenever a transaction had receipt data (which is also true for ordinary purchase updates). This keeps ordinary purcahses as state `purchased`. These purchase records will also have `pendingCompletePurchase` set to `true`, since this is gated by state `purchased`.
    
    Fixes:
    * flutter/flutter#180046
    * flutter/flutter#172434
    
    ## 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.
    edpizzi authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    6350518 View commit details
    Browse the repository at this point in the history
  7. [url_launcher_ios] Migrate XCTest to Swift Testing (#10780)

    Part of flutter/flutter#180787
    
    Add some test parameterization. 
    ```
    ◇ Test run started.
    ↳ Testing Library Version: 102 (arm64-apple-ios13.0-simulator)
    ◇ Suite URLLauncherTests started.
    ◇ Test canLaunchFailureWithInvalidURL() started.
    ◇ Test canLaunch(url:expected:) started.
    ◇ Test launchWithUniversalLinks() started.
    ◇ Test launch(url:expected:) started.
    ◇ Test launchSafariViewControllerWithClose() started.
    ◇ Test launchSafariViewControllerFailureWithNoViewPresenter() started.
    ◇ Test launchWithoutUniversalLinks() started.
    ◇ Test launchFailureWithInvalidURL() started.
    ◇ Passing 2 arguments url → "good://url", expected → .success to launch(url:expected:)
    ◇ Passing 2 arguments url → "bad://url", expected → .failure to launch(url:expected:)
    2026-01-12 12:53:39.222409-0800 Runner[62355:494810] [Warning] Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<SFSafariViewController: 0x1018cd200>)
    ◇ Passing 2 arguments url → "bad://url", expected → .failure to canLaunch(url:expected:)
    ◇ Passing 2 arguments url → "good://url", expected → .success to canLaunch(url:expected:)
    ✔ Test canLaunchFailureWithInvalidURL() passed after 0.001 seconds.
    ✔ Test launchWithUniversalLinks() passed after 0.001 seconds.
    ✔ Test launchSafariViewControllerWithClose() passed after 0.042 seconds.
    ✔ Test launchWithoutUniversalLinks() passed after 0.042 seconds.
    ✔ Test launchSafariViewControllerFailureWithNoViewPresenter() passed after 0.042 seconds.
    ✔ Test launchFailureWithInvalidURL() passed after 0.042 seconds.
    ​​​​✔ Test launch(url:expected:) passed after 0.043 seconds.
    ✔ Test canLaunch(url:expected:) passed after 0.043 seconds.
    ✔ Suite URLLauncherTests passed after 0.043 seconds.
    ✔ Test run with 8 tests passed after 0.043 seconds.
    ```
    https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8692848274232556065/+/u/Run_package_tests/native_test/stdout
    
    Adding CHANGELOG override per #10761 (comment)
    
    ## 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.
    jmagman authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    f709ea1 View commit details
    Browse the repository at this point in the history
  8. [two_dimensional_scrollables] optimizes tableview janks with >250k ro…

    …ws (#10738)
    
    ### Description:
    This PR optimizes the scrolling jank issue of the TableView component when the number of rows exceeds 250,000.
    
    ### Root Cause:
    The _updateFirstAndLastVisibleCell method in RenderTableViewport uses linear for-loop traversal on _columnMetrics and _rowMetrics to locate the visible boundary cells: _firstNonPinnedRow, _lastNonPinnedRow, _firstNonPinnedColumn, and _lastNonPinnedColumn. When the number of rows/columns is extremely large (e.g., >250k rows), this linear traversal causes significant main-thread blocking and scrolling jank.
    
    ### Solution:
    Replace the linear for-loop with binary search algorithm to find the visible boundary cells (_firstNonPinnedRow, _lastNonPinnedRow, _firstNonPinnedColumn, _lastNonPinnedColumn). Binary search reduces the time complexity from O(n) to O(log n), effectively optimizing the scrolling jank issue under large data volumes.
    
    ### Fixes: [#138271](flutter/flutter#138271)
    
    ### Video performance comparison
    before:
    https://github.com/user-attachments/assets/ca5b8821-4bdb-411f-bb2c-63998ac7c0d9
    
    after:
    https://github.com/user-attachments/assets/ebbf96d9-9e04-4ede-ae79-cd433885d3ab
    
    ## Pre-Review Checklist
    wangfeihang authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    e6955be View commit details
    Browse the repository at this point in the history
  9. [batch-release] Step2 : Publish packages from the release branch (#10459

    )
    
    issue: flutter/flutter#176944 
    
    Add a batch Release Flag in the publish command. 
    
    The main branch will only publish packages that are opted out of batch release.
    The release branch will only publish packages that are opted into batch release.
    
    ## 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.
    hannah-hyj authored Jan 21, 2026
    Configuration menu
    Copy the full SHA
    9010299 View commit details
    Browse the repository at this point in the history
Loading