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

Commits on Sep 25, 2026

  1. [google_maps_flutter_web] Fix AdvancedMarker anchors on web (#11966)

    Fixes AdvancedMarker anchor handling in `google_maps_flutter_web`.
    
    Previously `AdvancedMarker.anchor` was not applied on web, so custom advanced marker content was positioned as if it used the default anchor. This caused markers with non-default anchors to appear offset from their intended map coordinates.
    
    This PR converts Flutter marker anchor offsets into the Google Maps JavaScript Advanced Marker `anchorLeft` and `anchorTop` CSS offset properties when creating marker options, and reapplies those properties when an existing advanced marker is updated.
    
    Adds integration test coverage for creating and updating an `AdvancedMarker` with custom anchors.
    
    Addresses flutter/flutter#80578.
    
    ## Pre-Review Checklist
    3ph authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    756c474 View commit details
    Browse the repository at this point in the history
  2. [material_ui] Migrate M3 Divider template to use new gen_defaults (#1…

    …2915)
    
    Work toward flutter/flutter#187899.
    Fixes flutter/flutter#188412.
    
    This PR migrates the M3 Divider defaults template to the new packages/material_ui/tool/gen_defaults generator.
    
    ## Pre-Review Checklist
    QuncCccccc authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    897192a View commit details
    Browse the repository at this point in the history
  3. [material_ui] Migrate M3 Drawer template to use new gen_defaults (#12916

    )
    
    Work toward flutter/flutter#187899.
    
    Fixes flutter/flutter#188413.
    
    This PR migrates the M3 Drawer defaults template to the new packages/material_ui/tool/gen_defaults generator.
    
    ## Pre-Review Checklist
    QuncCccccc authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    6b8b927 View commit details
    Browse the repository at this point in the history
  4. [two_dimensional_scrollables] Exclude trailing pinned spans from the …

    …non-pinned range (#12666)
    
    `RenderTableViewport` lays out and paints the table as nine regions: leading pinned, regular and
    trailing pinned rows, each crossed with the same three column categories.
    `_updateFirstAndLastVisibleCell` binary searches for the last regular row and column of the visible
    range, and when no regular span reaches the trailing edge of the layout target it fell back to the
    last index in the metrics map:
    
    ```dart
    _lastNonPinnedColumn ??= _columnMetrics.length - 1;
    ```
    
    Whenever `trailingPinnedRowCount` or `trailingPinnedColumnCount` is greater than zero, that last
    index *is* a trailing pinned span. The regular range then overlaps the trailing pinned range, and
    the same `TableVicinity` is visited by two regions in a single layout and paint pass.
    
    `_updateColumnMetrics` and `_updateRowMetrics` already cap the same value correctly, with the rule
    that `_lastRegularColumnIndex` and `_lastRegularRowIndex` express, so the two code paths disagreed.
    This PR makes `_updateFirstAndLastVisibleCell` use those getters. The old fallback is kept for the
    case where they are null — infinite spans with no null terminator — where trailing pinned spans
    cannot exist, since `_firstTrailingPinnedColumn` and `_firstTrailingPinnedRow` both require a
    non-null span count.
    
    Fixes flutter/flutter#185842
    Fixes flutter/flutter#190800
    
    ## Beyond the duplicated work
    
    The overlap is not only wasted layout. Scrolling a table to the end with a trailing pinned span
    throws, because two regions claim the same cell:
    
    ```
    Expected to re-use an element at (row: 0, column: 19), but none was found.
      package:flutter/src/widgets/two_dimensional_viewport.dart:377  'elementToReuse != null'
    ```
    
    and, once the spans carry a decoration, the non-pinned region reaches a cell whose `paintOffset` was
    never set for it:
    
    ```
    Null check operator used on a null value
      RenderTableViewport._paintCells.getColumnRect  (table.dart:1888)
    ```
    
    Dragging through a 60x60 table with pinned and trailing pinned rows and columns throws
    `Expected to re-use an element at ...` and `TableViewCell for (row: 1, column: 58) could not be
    found` before this change, and nothing after it. That is the same subsystem and trigger as
    flutter/flutter#190800, but the specific assertion reported there did not
    reproduce in my runs, so I am not claiming this fixes it.
    
    ## Tests
    
    Two regression tests are added to `table_test.dart`, one per axis. Each scrolls a table with a
    trailing pinned span to the end, asserts that no exception is thrown, and asserts that the trailing
    pinned span's decoration is painted exactly once — by the trailing pinned region only. Both fail
    before this change.
    
    Counting `cellBuilder` calls does not work as a test here: `buildOrObtainChildFor` caches children
    for the frame and `RenderObject.layout` early-returns on unchanged constraints, so the duplicated
    visit is invisible from the delegate. The new `CountingSpanDecoration` helper observes it through
    the public `TableSpanDecoration.paint` API instead.
    
    ## 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.
    m1roxx authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    c983254 View commit details
    Browse the repository at this point in the history
  5. [material_ui] Migrate M3 ExpansionTile template to use new gen_defaul…

    …ts (#12920)
    
    Work toward flutter/flutter#187899.
    Fixes flutter/flutter#188414.
    
    This PR migrates the M3 ExpansionTile defaults template to use the new `gen_defaults` in `material_ui`.
    The generated defaults remain unchanged.
    
    ## Pre-Review Checklist
    QuncCccccc authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    5eb35f5 View commit details
    Browse the repository at this point in the history
  6. [material_ui] Don't clip MenuItemButton.leadingIcon (#12986)

    `_MenuItemLabel` wrapped the leading `Row` in a hard-coded `ClipRect` when `overflowAxis` is vertical, which clipped `leadingIcon` to its own bounds. This clips any decoration painting outside those bounds, such as a `Badge`.
    
    This PR is to remove the `ClipRect` so leading icons won't be incorrectly clipped.
    
    Fixes flutter/flutter#192732
    
    Before
    <img width="158" height="196" alt="badge_before_real" src="https://github.com/user-attachments/assets/4f1a5121-3908-4f5b-b1ea-f78803da7540" />
    
    After 
    <img width="158" height="196" alt="badge_after_real" src="https://github.com/user-attachments/assets/8c302692-5dcf-40d7-92bf-111a72437cfc" />
    
    ## Pre-Review Checklist
    QuncCccccc authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    f0c985d View commit details
    Browse the repository at this point in the history
  7. Plugin example apps to 9.3.1 (#13019)

    Update Flutter plugin examples to 
    
    AGP: 9.3.1
    KGP: 2.4.20
    Gradle: 9.5.0
    
    Partially Addresses flutter/flutter#189518
    
    ## 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.
    jesswrd authored Sep 25, 2026
    Configuration menu
    Copy the full SHA
    d8933fd View commit details
    Browse the repository at this point in the history

Commits on Sep 26, 2026

  1. [material_ui] Add Material 3 Expressive IconButton (#12832)

    This PR is to port #12093 which was created in `m3e_migration` feature branch.
    
    ### The original PR description
    
    This PR is to add Material 3 Expressive IconButton support behind an explicit component-level opt-in.
    
    This PR adds:
    * 3 new `ButtonStyle` properties used by the IconButton M3E migration:
      * `sizeVariant`
      * `iconButtonWidth`
      * `shapeVariant`
    * `IconButtonThemeData.variant` so `IconButtons` can opt into `StyleVariant.material3Expressive`.
    * `IconButtonTemplateM3E` to generate `IconButton` defaults from the M3E token data.
    * Adds the generated M3E `IconButton` defaults in:
      * `packages/material_ui/lib/src/generated/icon_button_defaults_m3e.g.dart`
    * Material 3 Expressive defines an extra-small IconButton with a 32dp visual container while retaining a 48dp interaction target. `ThemeData.materialTapTargetSize` defaults to `shrinkWrap` on desktop, so inheriting it would reduce the interaction target to 32dp. M3E therefore defaults to `MaterialTapTargetSize.padded`. Applications can still override ButtonStyle.tapTargetSize explicitly.
    
    ### TODO:
    * I'll add a separate PR/demo showing the Material 3 Expressive IconButton variants.
    * Will also update IconButton shape morphing to use physics-based motion animation.
    
    <img width="1858" height="1514" alt="image" src="https://github.com/user-attachments/assets/1914ca8e-a1e2-4881-aa9b-083f26d44b50" />
    
    ## Pre-Review Checklist
    QuncCccccc authored Sep 26, 2026
    Configuration menu
    Copy the full SHA
    15e15cc View commit details
    Browse the repository at this point in the history
  2. [google_maps_flutter] Indicate that default iOS impl is discoraged (#…

    …12872)
    
    Updates the app-facing package's README to tell clients to pick either the SDK 9 or SDK 10 package, explicitly discouraging using the default implementation.
    
    As discussed in flutter/flutter#119108 this is an interim step until either:
    - Flutter drops support for iOS 15, or
    - we decide that it's okay to potentially cause minor regressions for clients with apps that require iOS 16+ by making the endorsed implementation the `_sdk9` variant, rather than the legacy version that will auto-select SDK 10 for those users.
    
    Follow-up to flutter/flutter#119108
    
    ## 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 Sep 26, 2026
    Configuration menu
    Copy the full SHA
    ba0364a View commit details
    Browse the repository at this point in the history
Loading