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/flutter
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 9cd60b512fbc
Choose a base ref
...
head repository: flutter/flutter
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: a0924c76b0fd
Choose a head ref
  • 13 commits
  • 154 files changed
  • 16 contributors

Commits on Apr 6, 2026

  1. Parse scheme file with XML parser for SwiftPM migrator (#184525)

    Make scheme parsing more forgiving of whitespace differences.
    
    Fixes #183029.
    
    ## 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].
    
    **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
    vashworth authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    bf14796 View commit details
    Browse the repository at this point in the history
  2. Keep last character obscured when toggling obscureText (#183488)

    …perty toggle on or off
    
    
    ### Summary
    When `obscureText` is toggled quickly from true → false → true, the most
    recently entered character is shown in an obscured text field.
    
    Fixes #184483
    
    ### Steps to restore
    
    1. Create a TextField with `obscureText = true`.
    
    2. Quickly type some text.
    
    3. Toggle `obscureText` to **false**.
    
    4. Immediately toggle it back to **true**.
    
    5. Observe the displayed text.
    
    > Note: This behavior occurs when the operations are performed quickly
    (≤ ~1500 ms), due to defaults:
    >
    > ```dart
    > // The time it takes for the cursor to fade from fully opaque to fully
    >// transparent and vice versa. A full cursor blink, from transparent to
    opaque
    >// to transparent, is twice this duration.
    >const Duration _kCursorBlinkHalfPeriod = Duration(milliseconds: 500);
    >
    >// Number of cursor ticks during which the most recently entered
    character
    >// is shown in an obscured text field.
    >const int _kObscureShowLatestCharCursorTicks = 3;
    > ```
    
    
    ### Actual Result
    
    The most recently entered character may still be visible briefly after
    `obscureText` is set back to true
    
    
    
    https://github.com/user-attachments/assets/94d2ba56-c551-4385-8f88-3dd746c8dc09
    
    
    
    ### Expect result
    
    When `obscureText` is updated to true, all characters should be
    immediately obscured, regardless of previously revealed characters.
    
    
    
    https://github.com/user-attachments/assets/992e0473-059c-4c7a-a1b1-8ca6bf222538
    TrangLeQuynh authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    7f3269b View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    0ab5547 View commit details
    Browse the repository at this point in the history
  4. Fix invisible accessibility element before scroll view (#184155)

    Fixes #164483
    
    
    https://github.com/user-attachments/assets/87d85a46-9e62-4247-b36e-b1ff5b2e3275
    
    When in VoiceOver mode, currently when focusing on a listview, it
    focuses on the container rather than the first element in a list. The
    expected behaviour is to immediately hear the first element of the list,
    instead of there being a silent element before it.
    
    The fix in this pr alters the behaviour so that when VoiceOver is on,
    `FlutterSemanticsScrollView`s are not considered an accessibility
    element unless it has an accessibility label.
    
    This fix addresses this by 
    ## 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.
    LouiseHsu authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    6e3c87c View commit details
    Browse the repository at this point in the history
  5. [A11y] Allow percentage strings like "50%" as SemanticsValue for `P…

    …rogressIndicator` (#183670)
    
    Fix: #182491 
    
    So they can make the progress bar read "50%" instead of "0.5", "50" and
    provide a better user experience.
    
    
    
    
    ## 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].
    
    **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
    hannah-hyj authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    e42df52 View commit details
    Browse the repository at this point in the history
  6. Apply rect clipping to surface views (#184471)

    Fixes #175546 
    
    Upper image is unclipped, bottom is clipped:
    
    <table width="100%">
      <thead>
        <tr>
          <th align="center">With Change</th>
          <th align="center">Without Change</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td align="center" width="50%">
    <img
    src="https://github.com/user-attachments/assets/c713dd0f-8cfd-4e7d-9070-3bf51a89f50a"
    style="max-width: 50%;"></img>
          </td>
          <td align="center" width="50%">
    <img
    src="https://github.com/user-attachments/assets/fc23ff88-bd64-44d0-a840-e7ba58638943"
    style="max-width: 50%;"></img>
          </td>
        </tr>
        <tr>
          <td align="center">
    <img
    src="https://github.com/user-attachments/assets/fef237f1-9e4f-4376-a251-22335cf7a324"
    style="max-width: 50%;"></img>
          </td>
          <td align="center">
    <img
    src="https://github.com/user-attachments/assets/db707bf1-2bd8-4c39-a510-ca45f7730a0a"
    style="max-width: 50%;"></img>
          </td>
        </tr>
      </tbody>
    </table>
    gmackall authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    a488da3 View commit details
    Browse the repository at this point in the history
  7. Use full goto.google.com hostname for go/ links (#184679)

    It is best practice to use the full hostname, because it works in
    certain situations where go/ does not.
    b-luk authored Apr 6, 2026
    Configuration menu
    Copy the full SHA
    24e6fed View commit details
    Browse the repository at this point in the history

Commits on Apr 7, 2026

  1. WindowsPlugin should not crash when ffiPlugin enabled (#184695)

    This change updates an assert in the `WindowsPlugin` constructor that
    previously crashed because it did not consider `ffiPlugin` unlike
    `LinuxPlugin` which does.
    
    ## 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.
    
    ---------
    
    Co-authored-by: Renzo Olivares <[email protected]>
    Renzo-Olivares and Renzo Olivares authored Apr 7, 2026
    Configuration menu
    Copy the full SHA
    d79a56b View commit details
    Browse the repository at this point in the history
  2. [widgets/raw_menu_anchor.dart] Always call onClose and onCloseRequest…

    …ed on descendants before parent. (#182357)
    
    This PR corrects the order in which onClose() and onCloseRequested() is
    called by a RawMenuAnchor tree.
    
    Per @dkwingsmt:
    
    > A close is immediate and should close children immediately before
    closing itself, while a closeRequest [can be] async and should
    closeRequest children.
    
    Before, calling close() on a parent would call handleCloseRequest() on
    its children, leading to children (potentially) finishing their closure
    after their parents.
    
    Additionally, if a RawMenuAnchor is already closed, it will not trigger
    onCloseRequested.
    
    **Details:**
     
    The handleCloseRequest portion of the
    _RawMenuAnchorBaseMixin.closeChildren function has been moved into a
    requestChildrenClose function to be more explicit.
    
    Additionally, this PR makes handleCloseRequest call
    requestChildrenClose() after calling widget.onCloseRequested on
    _RawMenuAnchorState. This makes submenus begin closing after their
    parent menu begins closing. I also modified the menu_anchor.dart and
    raw_menu_anchor.3.dart code to remove a closeChildren call (now
    redundant).
    
    Last, this PR makes handleCloseRequest short-circuit if a menu isn't
    open. This prevents unncessary widget.onCloseRequest calls when a
    submenu is opened, since all sibling menus call handleCloseRequest
    before the submenu begins opening.
    
    This is a breaking change. I had to modify one of the DismissMenuAnchor
    tests since onCloseRequested is now called on all descendants when a
    dismissal occurs. I think it's best to introduce this change because it
    can lead to hard-to-track behavior when creating menus (that's how I
    discovered it).
    
    Migration guide: flutter/website#13145
    
    Additional tests were added to check the opening and closing behavior. 
    
    Fixes #182355
    
    ## 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].
    - [] 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].
    
    **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
    [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
    
    ---------
    
    Co-authored-by: Tong Mu <[email protected]>
    davidhicks980 and dkwingsmt authored Apr 7, 2026
    Configuration menu
    Copy the full SHA
    d18ad52 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    941e3f3 View commit details
    Browse the repository at this point in the history
  4. Introduce command to build a swift package for SwiftPM add to app int…

    …egration (#184660)
    
    Enable the SwiftPM add to app command (`flutter build swift-package`)
    and add integration test to verify it works.
    
    Fixes #181223.
    
    ## 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].
    
    **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
    
    ---------
    
    Co-authored-by: Jenn Magder <[email protected]>
    vashworth and jmagman authored Apr 7, 2026
    Configuration menu
    Copy the full SHA
    3bdf02c View commit details
    Browse the repository at this point in the history
  5. Use the WindowRegistry in the multiple_windows example app (#184579)

    ## What's new?
    - This pull request updates the multiple_windows example application use
    the new `WindowRegistry` from the `_window.dart` API to hold the
    collection of windows instead of the `KeyedWindowManager` that we had
    implemented prior.
    - It also adds `WindowRegistry.of` for a non-nullable access to the
    window registry.
    
    ## 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].
    
    **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
    mattkae authored Apr 7, 2026
    Configuration menu
    Copy the full SHA
    92d81d3 View commit details
    Browse the repository at this point in the history
  6. Reland "[data_assets] Cleanup tests" (#184714)

    Relands #184209 adding a mac
    shard as suggested in
    #184209 (comment).
    
    For adding a shard, I followed
    #154444, which suggests it's
    contained in the single `.ci.yaml` file, and the new shard names need to
    have `bringup: true`.
    
    
    ----
    
    Original PR description:
    
    This cleans up the data_assets experiment testing.
    
    * Use integration test projects, which are statically analyzed,
    formatted, etc.
    * This forces us to be explicit about the `package:data_assets`
    dependency.
    * This means the test projects will roll their dependencies with the
    dependency auto roller. (The test project was still using
    `native_assets_cli` which has been replaced with `hooks` and
    `data_assets`.)
    * Pin `package:data_assets`, because it's experimental, and we might do
    breaking changes.
    
    Also makes the test projects more useful:
    
    * The `data_assets_app` now displays the assets in the UI. (Not only
    prints to the console for the integration tests.)
    * The `data_assets_package` now actually uses its asset.
    
    And cleans up the test projects:
    
    * Move the test files into the `data/` dir.
    * Give the test data assets a proper extension.
    
    I saw weird behavior on Windows:
    
    * DevFS doesn't pick up the writes to the Dart files, not even with
    flushing or sleeps: `Compiling dart to kernel with 0 updated files`
    leading to a state where the Dart variable contents don't get updated
    while the data assets do. This integration test is not really about Dart
    hot restart, so I've skipped those checks on Windows.
    * This reproduces locally in the integration test, but not when running
    the app and editing the file.
    
    The checks in dev/bots/analyze.dart also required some updates:
    
    * The template files check didn't allow for the HTML license.
    
    P.S. Sorry for all the generated Flutter scaffolding. It seems that that
    is the way it's done in the integration test directory. (The package
    with the data assets is clean, but the Flutter app ...)
    dcharkes authored Apr 7, 2026
    Configuration menu
    Copy the full SHA
    a0924c7 View commit details
    Browse the repository at this point in the history
Loading