Related to #176027
Needs to land after https://github.com/flutter/flutter/pull/176094
- **Add java warn and error to android workflow**
## 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].
- [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: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This pr assumes https://github.com/flutter/flutter/pull/176049 lands
first.
- **Update java version ranges with the top end limitation for java pre
17**
- **change default for unknown agp version to true for java support**
- **Add kotlin 2.2* support for analyze --suggestions**
-
Related to https://github.com/flutter/flutter/issues/175669 and
https://github.com/flutter/flutter/issues/176027
## 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].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
Update the maxKnownAndSupported versions of Java (now 26), AGP (from
8.9.1 to 8.13), and Gradle (now 9.1).
Add tests for new codepaths and expand existing test coverage. Some
typos and changes to aid debugging included as well.
AGP 9 was made available for preview last week
https://developer.android.com/build/releases/agp-preview.
Fixes: https://github.com/flutter/flutter/issues/175669
Commits:
- **update max known and supported java, gradle and agp**
- **make tests in a loop and add testing for get java version for and
validate java and agp**
- **move some tests to gradle_utils, make debugging easier**
- **Migrated gradle_utils tests from gradle_test to gradle_utils_test**
---------
Co-authored-by: Camille Simon <43054281+camsim99@users.noreply.github.com>
Windows file URIs reported by IDEs can be percent encoded. This change
decodes all URIs for `TextDocument` instances to ensure they're
consistent with the URIs provided by the tool.
Fixes https://github.com/flutter/flutter/issues/175524
Gradle 9.1.0 was released on 2025-09-18.
## 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].
- [ ] 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.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on [Discord].
This change updates `Preview` to be a `base` class instead of `final`,
allowing for developers to extend `Preview` and create their own custom
preview annotations.
To reduce friction associated with working with `const` constructors,
two new methods have been added: `MultiPreview.transform()` and
`Preview.transform()`. These methods are invoked at runtime by the
preview environment, allowing for developers to create or modify
`Preview` instances with non-constant values. This also relaxes
restrictions around `Preview`'s callback parameters (e.g., `wrapper`),
which do not need to be static or public when provided to a `Preview` in
the context of a `*.transform()` method. This makes it possible to
create custom preview classes that completely encapsulate their
callbacks, removing the need for separate public, static function
declarations.
To make transforming `Preview`s simpler, a `PreviewBuilder` utility
class has also been added.
Fixes https://github.com/flutter/flutter/issues/175534
It's possible for the DTD `Editor` service to send a
`ActiveLocationChanged` event with a null `textDocument` when a
'synthetic' file is selected (e.g., IDE settings, the widget previewer,
etc.). The previewer should not react to these events and should
continue rendering the last set of filtered previews from a valid source
file.
This PR contains the initial work to prepare for the removal of
instances of DevTools being served manually by the flutter_tool, instead
relying on DDS to serve DevTools. This will be consistent with how the
standalone Dart VM serves DevTools, tying the DevTools lifecycle to a
live DDS instance. This will allow for the removal of much of the logic
needed to properly manage the lifecycle of the DevTools server in a
future PR. Also, by serving DevTools from DDS, users will no longer need
to forward a secondary port in remote workflows as DevTools will be
available on the DDS port.
There's two remaining circumstances that will prevent us from removing
`DevtoolsRunner` completely:
- The daemon's `devtools.serve` endpoint
- `flutter drive`'s `--profile-memory` flag used for recording memory
profiles
This change:
- Hides `v` from the help menu on web in profile/release mode
- Keeps `v` available in debug and on native platforms
- Change command order: `v` now appears before `s` in help
- Updates `_commonTerminalInputHandler` to block `v` on web in release
mode
Testing:
- Added new test: `printHelpDetails hides v on web in profile mode`
- Added new test: 'v - does not launchDevToolsInBrowser on web in
profile mode'
- Fixed existing test to match correct command order (`v` before `s`)
fixes#143451
## 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.
- [ ] 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.
---------
Co-authored-by: Daniil Lipatkin <nt4f04uNd@gmail.com>
Co-authored-by: Ben Konyi <bkonyi@google.com>
This change adds the following events:
- `widget_preview.initializing`: sent immediately after the widget
previewer starts. This event includes the PID of the process starting
the widget previewer for use by tooling to explicitly kill the tool
process.
- `widget_preview.logMessage`: sent for calls to `Logger` methods when
in machine mode. This follows the same format as `daemon.logMessage`.
This change also fixes and improves testing of
`WidgetPreviewMachineAwareLogger` in `widget_preview_machine_test.dart`
as the existing test validator did not cause tests to fail correctly.
Fixes https://github.com/flutter/flutter/issues/175002
This change adds support for creating groups of widget previews.
Previews with the same `group` parameter will be grouped together in a
collapsable tile in widget previewer. Previews without a provided
`group` will be placed in the `Default` group.
This change also slightly reworks the UI to make individual previews
more easily distinguishable from preview groups, moves the controls for
the previewer to the bottom of the preview window, and adds a divider
between the preview name and preview content if a name is provided.
Fixes https://github.com/flutter/flutter/issues/173871
**Example:**
<img width="767" height="640" alt="image"
src="https://github.com/user-attachments/assets/80dc202c-77d3-42a5-be9d-e0d9a9a0f28b"
/>
This change allows for the widget previewer to react to
`activeLocationChanged` events sent over the `Editor` DTD service to
automatically filter the set of visible previews based on the currently
selected file in the IDE. This functionality can be turned on or off
depending on whether or not the developer wants to see all previews in
the project at once.
This change also includes some minor refactoring and UI changes to move
the widget preview environment controls to a reserved area at the bottom
of the preview window.
**Demo:**
https://github.com/user-attachments/assets/c3b93826-8437-4655-8264-6beed6651fe7
This PR retries the previously reverted PR #169293.
> [!NOTE]
> This feature was originally intended to be Impeller-only, and it was
agreed that no additional engine changes were necessary. However, during
testing on the Metal backend, a shader loading issue occurred. In my
view, this seems to be a simple problem caused by the shader not being
included in the engine’s runtime_stages.
## 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].
- [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: Tong Mu <dkwingsmt@users.noreply.github.com>
Co-authored-by: Kate Lovett <katelovett@google.com>
Adds support for the `--devtools-server-address=<uri>` and `--devtools`
options.
Also fixes an issue where the VM service + DevTools connection
information was not printed to STDOUT for web devices.
Fixes https://github.com/flutter/flutter/issues/173617
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
This fixes an issue where the wasm build was still getting executed when
`--no-wasm-dry-run` was specified.
Also adds a test to verify the expected behavior.
Co-authored-by: Nate Biggs <natebiggs@google.com>
Should have been included in
https://github.com/flutter/flutter/pull/173987
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Our documentation states that "the value of an asset is a relative path
from the pubspec.yaml file", but this was never actually verified by the
tool. On systems with POSIX semantics, this would simply result in
invalid asset paths being built, but on Windows this could cause an
exception to be thrown as the built URI would not be a valid `file://`
URI.
This change adds checks to ensure that asset paths are relative and that
they are valid file paths.
Fixes https://github.com/flutter/flutter/issues/173405
Closes https://github.com/flutter/flutter/issues/173904.
It's not clear to me how `git describe --tags HEAD` ever ... worked to
determine a fallback. From what I can tell, the _intent_ was to use the
latest (newest? closest?) tag as the base version, and then append
`-{commitCount}-{shortHash}` as the fallback version number when on
`master` (or any non-published branch).
So, I rewrote the implementation, unfortunately with 4 separate calls
out to `git ...` instead of a single one.
There are 20+ tests that fail as a result of this change, mostly because
they make specific expectations around `git describe` being invoked, and
of course that is no longer the case - putting those aside, I'd like to
double check that:
1. I understand what the original command was _intending_ to do
2. We like the _output_ of the updated command
3. ... we either are okay with the implementation, or have an
alternative in mind (I'm no `git` master)
Wdyt?
At this commit:
```sh
$ flutter-dev --version
Flutter 3.36.0-1.0.pre-170 • channel [user-branch] • https://github.com/matanlurey/flutter
Framework • revision 250381a185 (5 minutes ago) • 2025-08-19 18:57:36 -0700
Engine • hash f278b0aa3b8c6732ab636563eb8e896c35fc9c79 (revision 9ac4facf7e) (2 hours ago) • 2025-08-19 23:42:28.000Z
Tools • Dart 3.10.0 (build 3.10.0-115.0.dev) • DevTools 2.49.0
```
/cc @zanderso @jmagman for historics.
Instead of generating assembly code that is then compiled to a Mach-O
dynamic library, use the new app-aot-macho-dylib output option for
gen_snapshot to generate the Mach-O dynamic library without the assembly
step.
Related issues:
* https://github.com/dart-lang/sdk/issues/43299
* https://github.com/dart-lang/sdk/issues/60307
## 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].
- [X] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [X] All existing and new tests are passing.
Fixes https://github.com/flutter/flutter/issues/173895
This is a top-10 crasher for `3.35.{0,1}`.
---------
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
DWDS 25.0.1 requires that a valid reloadedSourcesUri is passed and
updated for both a hot restart and a hot reload. Therefore, the
bootstrap scripts which use it as well as the code to write that file is
updated. Note that this file is read in both DWDS and in the bootstrap
script. Along with this, code is fixed to update modules and digests
regardless of a full restart. Currently, it makes no difference as
neither Flutter tools or DWDS makes use of the updated modules or
digests with the new library bundle format, but it's updated for
consistency.
## 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].
- [ ] I listed at least one issue that this PR fixes in the description
above.
- [x] 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].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.