924 Commits

Author SHA1 Message Date
Michael Goderbauer
03d6c1d479
Bump ffigen in templates (#180513) 2026-01-06 00:12:39 +00:00
Ben Konyi
afb13d8bb7
[ Widget Preview ] Add UUID to registered DTD streams and services (#180140)
DTD only supports a single instance of a registered service with a given
name. For widget preview development, we sometimes want to use a DTD
instance that's attached to an IDE to test IDE integration. However,
IDEs frequently spawn their own widget preview instances which register
services with DTD. In the case where `flutter widget-preview start
--dtd-url=<dtd-url>` is run and `dtd-url` points to a DTD instance with
another widget preview service running, the process simply crashes.

This change adds a unique identifier to the widget preview DTD service
and stream names that allows for each `flutter widget-preview start`
instance to register its own unique widget preview DTD services, even if
other widget preview instances are using the same DTD instance.

Fixes https://github.com/flutter/flutter/issues/179883
2026-01-05 19:52:27 +00:00
Ben Konyi
a78aefa9bc
[ Widget Preview ] Pass DTD URI as a constant in a generated file (#179821)
Passing the DTD URI via a Dart define results in a new
`<hash>.cache.dill.track.dill` being created on each run as the DTD URI
is never the same and the `cache.dill.track.dill` hash is partly based
on the set of Dart defines. These files are not cleaned up
automatically, so they could take up a significant amount of memory over
time.

This change adds an additional code generation step to the widget
previewer which populates
`widget_preview_scaffold/lib/src/dtd/dtd_connection_info.dart` with a
constant containing the DTD URI provided by the tool.

Fixes https://github.com/flutter/flutter/issues/179139
2025-12-15 15:01:29 +00:00
Ben Konyi
c1f134a009
[ Widget Preview ] Add embedded Widget Inspector support (#178116)
This change allows for users to open an instance of the DevTools Widget
Inspector within a web view embedded in the widget previewer. This will
allow for developers to inspect their previews without requiring IDEs to
create a special debug session for the widget previewer application.

DWDS is also rolled as part of this change to add DDS and DevTools
support for the `web-server` device.

Fixes https://github.com/flutter/flutter/issues/166423

**Demo:**


https://github.com/user-attachments/assets/3e3a1098-0526-4c7f-8087-38fb84f28335
2025-12-05 01:03:54 +00:00
Elijah Okoroh
0b191ba123
Add shared Darwin implementation for plugins (#176495)
This PR introduces support for creating Flutter plugins with a single,
shared implementation for iOS and macOS. This is enabled by a new darwin
platform option in the flutter create command, which simplifies code
maintenance and reduces duplication for plugin authors.

*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*
Fixes #161019 

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.

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
2025-11-26 23:00:42 +00:00
Elijah Okoroh
ddba36ac4a
Dynamically set MinimumOSVersion in App.framework (#178253)
Currently, the MinimumOSVersion in App.framework/Info.plist is sourced
from a static template file created during flutter create. This value
can become out of sync with the -miphoneos-version-min flag used to
compile the App.framework binary, especially after a Flutter SDK
upgrade. This mismatch can lead to App Store submission warnings or
rejections.

This change fixes the issue by making the build process the single
source of truth for the MinimumOSVersion.

Fixes #176313 

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*

## 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.

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
2025-11-25 03:39:36 +00:00
Ben Konyi
101ace2140
[ Widget Preview ] Always generate scaffold under $TMP (#179039)
Since `flutter clean` can delete the `.dart_tool/` directory while a
`flutter widget-preview start` command is active, it's possible for the
`widget_preview_scaffold` to be deleted and cause the preview process to
crash.

This change works around this issue by always generating the
`widget_preview_scaffold` project under $TMP on each invocation of the
previewer. This doesn't result in much of a regression in startup times
as we currently aren't launching the previewer using restored state as
this isn't currently possible with the web device targets. Moving the
scaffold under $TMP means Flutter tooling will never accidentally delete
the scaffold while the previewer is running.

Filed https://github.com/flutter/flutter/issues/179036 to track
reverting this behavior when a better solution is found.

Fixes https://github.com/flutter/flutter/issues/175058
2025-11-24 20:48:36 +00:00
Victoria Ashworth
cb7b7dfe86
Enable UIScene Migration and update create templates (#178700)
Reland https://github.com/flutter/flutter/pull/178328.

## 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.

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
2025-11-18 17:08:06 +00:00
auto-submit[bot]
1b596053d6
Reverts "Enable UIScene Migration and update create templates (#178328)" (#178665)
<!-- start_original_pr_link -->
Reverts: flutter/flutter#178328
<!-- end_original_pr_link -->
<!-- start_initiating_author -->
Initiated by: gaaclarke
<!-- end_initiating_author -->
<!-- start_revert_reason -->
Reason for reverting: causing failures in post submit tests

example:
https://ci.chromium.org/ui/p/flutter/builders/prod/Mac_ios%20platform_channels_benchmarks_ios/24421/overview

```
[2025-11-17 09:10:06.660248] [STDOUT] [STDOUT] [   +7 ms] Checking for advertised Dart VM Services...
[2025-11-17 09:10:06.671607] [STDOUT] [STDOUT] [  +11 ms] #0      _NativeSocket.send (dart:io-patch/socket_patch.dart:1524:34)
[2
<!-- end_revert_reason -->
<!-- start_original_pr_author -->
Original PR Author: vashworth
<!-- end_original_pr_author -->

<!-- start_reviewers -->
Reviewed By: {LongCatIsLooong}
<!-- end_reviewers -->

<!-- start_revert_body -->
This change reverts the following previous change:
Updates create templates for both iOS app and module to be migrated to UIScene. Can be tested with:

```
flutter create --platforms=ios my_app
flutter create --template module my_module
```

Module is integration tested in [module_test_ios](b1d5f03351/dev/devicelab/bin/tasks/module_test_ios.dart (L187-L191)).

Also, enables the UIScene tool migration to be enabled by default.

Fixes https://github.com/flutter/flutter/issues/170293.
Fixes https://github.com/flutter/flutter/issues/177266.
Fixes https://github.com/flutter/flutter/issues/177265.
Fixes https://github.com/flutter/flutter/issues/167267.

## 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.

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

<!-- end_revert_body -->

Co-authored-by: auto-submit[bot] <flutter-engprod-team@google.com>
2025-11-17 18:38:47 +00:00
Victoria Ashworth
f5e6491807
Enable UIScene Migration and update create templates (#178328)
Updates create templates for both iOS app and module to be migrated to
UIScene. Can be tested with:

```
flutter create --platforms=ios my_app
flutter create --template module my_module
```

Module is integration tested in
[module_test_ios](b1d5f03351/dev/devicelab/bin/tasks/module_test_ios.dart (L187-L191)).

Also, enables the UIScene tool migration to be enabled by default.

Fixes https://github.com/flutter/flutter/issues/170293.
Fixes https://github.com/flutter/flutter/issues/177266.
Fixes https://github.com/flutter/flutter/issues/177265.
Fixes https://github.com/flutter/flutter/issues/167267.

## 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.

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
2025-11-17 15:49:43 +00:00
Byoungchan Lee
d8a99e9a9a
Migrate packages/flutter_tools/templates/plugin templates to Kotlin DSL (#173993)
- Replaced `build.gradle.tmpl` files with `build.gradle.kts.tmpl` for
both Java and Kotlin Android plugin templates, as well as the shared
plugin template.
- Update `template_manifest.json` to reflect the new Kotlin DSL files.

Fixes #161703 and #142685.

## 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 `///`).
- [ ] 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: Gray Mackall <34871572+gmackall@users.noreply.github.com>
2025-11-12 18:05:01 +00:00
Daco Harkes
d88fd12ce8
[native assets] Roll and unpin dependencies (#178181)
Rolling the dependencies to the latest versions and unpinning them.

Tests: All existing tests of build hooks and code assets.
2025-11-10 20:44:40 +00:00
Adam Spivak
b87e863b80
Update pubspec.yaml.tmpl build version tracker on line 5 (#173600)
<!--
Thanks for filing a pull request!
Reviewers are typically assigned within a week of filing a request.
To learn more about code review, see our documentation on Tree Hygiene:
https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md
-->

Added a default +1 build number to the version field in
pubspec.yaml.tmpl (line 5). This ensures consistent versioning behavior
across iOS and Android for newly created Flutter projects.

Why this change?
- On iOS, CFBundleShortVersionString (marketing version) must be numeric
(major.minor.patch) and does not include the build number unless
explicitly set.
- On Android, the version name and version code can both be set,
allowing more flexibility in representing the build number.
- Without a build number in pubspec.yaml, Android defaults to +1 while
iOS omits it, resulting in inconsistent version strings between
platforms.

Benefits
- Consistency: Both iOS and Android builds will start with the same
format, e.g., 1.0.0+1.
- Clarity: New projects have a visible build number by default, reducing
confusion for new developers.
- Best Practice: Aligns with Apple’s numeric marketing version rules
while preserving Android’s flexibility.

Developers can still override --build-name and --build-number as needed
for custom versioning.
*List which issues are fixed by this PR. You must list at least one
issue. An issue is not required if the PR fixes something trivial like a
typo.*

*If you had to change anything in the [flutter/tests] repo, include a
link to the migration guide as per the [breaking change policy].*
Fixes #165325

## 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.

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: Ben Konyi <bkonyi@google.com>
2025-11-03 16:10:09 +00:00
August
bf4957815e
docs: Default Splash / Loading screen for web app in index.html (#177084)
Contributes to #102178

First I wanted to cherry-pick
https://github.com/flutter/gallery/pull/630. But then I noticed that
there already exists a documentation:
https://docs.flutter.dev/platform-integration/web/initialization.
As most users won't expect this to be customizable (as myself), I wrote
a little docs in the index.html.tmpl that link to this page.

https://docs.flutter.dev/platform-integration/web/initialization#example-display-a-progress-indicator

I still think a default splash screen should be in place, e.g. by
providing the `flutter_bootstrap.js` by default (?)

## 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 `///`).
- [ ] 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.
- [ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel
on [Discord].

<!-- 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
2025-11-03 15:21:21 +00:00
Pierre
f234d26926
Clean up links to docs website (#177792)
- remove link without use (PowerShell version minimum not reached, this
is not mentionned anywhere in Windows installation / troubleshooting
documentation)
- clean up API docs root
- clean up app template links, add `Learn Flutter` link
- update get started links
- replace `flutter.dev/docs` with `docs.flutter.dev`
- fix embedder descriptions
- fix broken API `docs.flutter.io` links
- http → https 
- remove `/install` from `/get-started` links
- fix Android Studio link

## 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 `///`).
- [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
[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: Parker Lougheed <parlough@gmail.com>
2025-11-01 18:38:27 +00:00
Robert Ancell
3f4fcd78c5
Remove generated file from template manifest (#177034)
I'm not sure what this manifest is being used for but none of the other
templates also list the file that is generated from them, seems to have
been a typo?

Co-authored-by: Ben Konyi <bkonyi@google.com>
2025-10-29 03:37:25 +00:00
Loïc Sharma
6d541a1c67
Update Flutter templates' Dart style (#175963)
This updates Flutter's templates to reduce the number of changes
triggered by running `dart format` immediately after `flutter create`.

I will get a test exemption: this is a refactoring with no semantic
changes.

<details>
<summary>Steps to check for stale templates...</summary>

```shell
# Create a directory to test the templates
rm -rf templates_test
mkdir templates_test
cd templates_test

# Create the templates
flutter create counter_app
flutter create empty_app --empty
flutter create my_package --template=package
flutter create my_plugin --template=plugin --platforms=android,ios,linux,macos,windows
flutter create my_ffi_package --template=package_ffi
flutter create my_ffi_plugin --template=plugin_ffi
flutter create my_module --template module

# Use git to check for changes
git init
git add .
git commit -m "Start"

# Format the templates
dart format .

# Check for "unexpected" changes:
git diff
```

</details>

Part of https://github.com/flutter/flutter/issues/175960

## 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 `///`).
- [ ] 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
[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
2025-10-10 05:38:08 +00:00
Ben Konyi
38dc1c88e9
[ Widget Preview ] Rework UI and theming (#176581)
This change consists of several UI changes:

- Added theming support for light and dark mode based on system
preferences
 - Pulled in a subset of the DevTools theming constants
 - Reduced size of widget preview buttons and controls
- Added initial support for setting theme based on IDE parameters passed
as query parameters. This does not include responding to theme changes
made after the widget previewer is loaded.
- Fixed issue where the `WidgetPreviewErrorWidget` would still show
controls, even though they aren't relevant


**IDE Theming Example:**
<img width="1149" height="571" alt="image"
src="https://github.com/user-attachments/assets/d84beacd-6b1c-4186-b793-88aae58613c1"
/>
2025-10-07 03:37:53 +00:00
Robert Ancell
bdbffa11cd
Fix code style in Linux embedder template (#176256)
As noticed by Gemini in another PR
2025-10-07 02:14:21 +00:00
Ben Konyi
04f323450d
[ Widget Preview ] Fix WidgetInspectorService override (#176550)
When registering the `WidgetPreviewScaffoldInspectorService`, we were
originally setting it after the bindings were initialized. This meant
that the widget inspector service extensions were registered with the
original `WidgetInspectorService` and were not taking the custom
codepaths in the override.

This change moves the `WidgetPreviewScaffoldInspectorService`
initialization to before the bindings are initialized.
2025-10-06 16:48:09 +00:00
Ben Konyi
0400e2cf77
[ Widget Preview ] Fix type error when retrieving flags from persistent preferences (#176546)
Also moves `dtd_services_test.dart` to actually use the
`WidgetPreviewScaffoldDtdServices` implementation, which would have
caught the typecast issue in the implementation.
2025-10-06 12:19:29 +00:00
Ben Konyi
23a9ce38af
[ Widget Preview ] Persist "Filter by Selected File" toggle (#176289)
This change introduces `PersistentPreferences`, which allows for the
widget previewer to save settings to disk.

`PersistentPreferences` makes use of the existing `~/.flutter-devtools`
directory used by DevTools for the same purpose, writing preferences in
JSON format to `~/.flutter-devtools/.widget-preview`.
2025-10-01 22:39:09 +00:00
Daco Harkes
dc3ad9d246
[native assets] Roll dependencies (#176287)
Rolling the dependencies to the latest versions.

Tests: All existing tests of build hooks and code assets.
2025-10-01 09:18:11 +00:00
Ben Konyi
37487b3e4c
[ Widget Preview ] Forward Widget Inspector navigation events via DTD (#176218)
With the assumption that IDEs will not create a debug session for the
widget previewer, the widget inspector's source navigation functionality
won't function as there's no IDE to listen to `navigate` events sent via
`postEvent`.

This change overrides some widget inspector behavior to allow for
navigating to source locations via the DTD Editor service instead of
relying on the VM service's `postEvent`.

This change also makes some minor changes to the diagnostic properties
and descriptions displayed within the inspector to display group and
custom preview annotation details.

Towards https://github.com/flutter/flutter/issues/166423
2025-09-30 23:36:56 +00:00
Reid Baker
eb35b066a5
Migrate java 11 usage to java 17 usage for templates (#176203)
Related to #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].
- [ ] 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].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
2025-09-29 19:17:06 +00:00
Ben Konyi
3d6b5994b8
[ Widget Preview ] Improve IDE integration support (#176114)
This change adds support for two DTD Editor service RPCs and makes
functionality that's dependent on the availability of the Editor service
reactive to the service availability changing.

The newly added `getActiveLocation` Editor RPC now allows for us to
properly determine which source file is selected at startup, removing
the need for special casing around initializing the filtered preview
set.

The `navigateToCode` Editor RPC is now supported, and URIs in stack
traces can now be clicked to navigate to the source location in the IDE.

Both filtering previews by selected file and stack frame navigation
links are only enabled when the Editor service is available.

Fixes https://github.com/flutter/flutter/issues/176113
2025-09-29 15:05:53 +00:00
Kate Lovett
f45deca8ba
Removes type annotations in templates (#176106)
Fixes https://github.com/flutter/flutter/issues/176098, [aligning with
Effective
Dart](https://dart.dev/effective-dart/design#dont-write-type-arguments-on-generic-invocations-that-are-inferred).

## 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 `///`).
- [ ] 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
[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
2025-09-26 20:34:37 +00:00
Loïc Sharma
2d0fbe8476
Update Flutter's templates to use dot shorthands (#175891)
The next stable release of Flutter includes Dart's new dot shorthands
feature. This updates Flutter's templates to use shorthands. For
example, this updates the counter app that's generated by `flutter
create`.

This change does not affect the framework's style guide; Flutter's
templates use a different style than the framework. For example,
templates use things like implicit types
([example](440e7c2978/packages/flutter_tools/templates/app/lib/main.dart.tmpl (L234))).

### Testing

To use these templates, run:

```
flutter create counter_app
flutter create empty_app --empty
flutter create my_package --template=package
flutter create my_plugin --template=plugin --platforms=android,ios,linux,macos,windows
flutter create my_ffi_package --template=package_ffi
flutter create my_ffi_plugin --template=plugin_ffi
flutter create my_module --template module
```

## 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.

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
2025-09-24 23:18:41 +00:00
Ben Konyi
b9ffd90bb7
[ Widget Preview ] Fix filter by file on Windows (#175783)
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
2025-09-24 16:45:43 +00:00
Ben Konyi
c804b2e0ea
Remove comment about trailing commas from templates (#175864)
With the new changes to `dart format` that insert trailing commas
automatically, these comments don't serve a purpose.

Fixes https://github.com/flutter/flutter/issues/175655
2025-09-24 13:04:34 +00:00
Ben Konyi
610c06fae6
[ Widget Preview ] Allow for custom Preview annotations, add support for runtime transformations (#175535)
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
2025-09-22 20:10:48 +00:00
Ben Konyi
f930c8105b
[ Widget Preview ] Don't update filtered preview set when selecting non-source files (#175596)
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.
2025-09-19 15:27:28 +00:00
Elijah Okoroh
1eab8e1d13
Deprecate Objective-C plugin template (#174003)
This PR marks the `--ios-language objc` flag as deprecated for plugin
creation. It introduces a warning message in the `flutter create` tool
when the flag is used, but **does not** remove the functionality at this
time. This is the first step towards its eventual removal.

## Context

As discussed in the issue, usage metrics show that Objective-C is used
in less than 4% of newly created plugins. To streamline the tool and
align with modern iOS development practices (i.e., Swift), we are
beginning the process of phasing out this option

**Changes:**
-   Adds a deprecation warning to the CLI when the `objc` flag is used.
-   Updates the `--help` text to reflect the deprecation.
- Removes obsolete tests for Objective-C plugin creation and usage
tracking.

## Testing

I have validated these changes by:

1. Manually running `flutter-dev create` with the `objc` flag to confirm
the new deprecation warning appears.
2. Verifying that creating a plugin without the --ios-language flag does
**not** trigger the warning.
3. Running the tests in the `test/commands.shard` to ensure no
regressions were introduced.
4.  CI will validate the changes to the devicelab tests.

Fixes #169683 

## 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 `///`).
- [] 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
2025-09-15 22:13:52 +00:00
Ben Konyi
2965567997
[ Widget Preview] Add group property to Preview (#174849)
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"
/>
2025-09-04 18:51:19 +00:00
Ben Konyi
1d19f97833
[ Widget Preview ] Respond to IDE navigation events and show previews from the currently focused script (#174466)
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
2025-09-02 16:49:11 +00:00
Daco Harkes
da5523afc3
[native assets] Roll dependencies (#174522)
Rolls the dependencies to the once published today.

Covered by existing integration tests.
2025-08-27 17:23:11 +00:00
Reid Baker
052b903e8e
[Android templates] Remove jetifier usage (#173431)
Fixes #173430

## 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.
2025-08-07 21:27:51 +00:00
Ben Konyi
024a80bf42
[ Widget Preview ] Cleanup for experimental release (#173289)
Widget previews are being released as an experimental feature in the
next stable release.

This change has some minor last minute changes to prepare for release:
  - Makes `flutter widget-preview` visible
  - Adds documentation links to docs.flutter.dev (not yet staged)
- Fixes minor bug with asset loading due to `AssetManifest.bin.json` not
being accounted for in the asset path mapping logic
2025-08-05 18:10:06 +00:00
Matan Lurey
0e7da1d019
Remove deprecated AssetManifest.json file (#172594)
Closes https://github.com/flutter/flutter/issues/143577.
2025-07-25 20:20:34 +00:00
Matan Lurey
7f92ee28ef
Remove stale references to .packages in tool tests (#172582)
Closes https://github.com/flutter/flutter/issues/106210.
2025-07-23 00:09:00 +00:00
Jason Simmons
99b69feaca
Upgrade flutter_lints in project template pubspec.yaml files (#172400)
The version of flutter_lints used by newly created projects should match
the version used by flutter_tools. This ensures that "pub get --offline"
will work on a project that was generated by "flutter create".

Also restore the Mac tool_tests_commands that were temporarily disabled
in https://github.com/flutter/flutter/pull/172388

Fixes https://github.com/flutter/flutter/issues/172375
2025-07-21 17:11:59 +00:00
Ben Konyi
b40f19b7ed
[ Widget Preview ] Initial work to support reacting to IDE events (#172040)
Adds support for a subset of the DTD `Editor` service registered by IDEs
for use by the widget preview scaffold. Currently, this feature subset
includes support for listening for:

 - Source file selection events
 - Editor theme change events

This change does not introduce any new functionality that makes use of
these new DTD `Editor` events.
2025-07-14 19:35:59 +00:00
Ben Konyi
a5541161e8
[ Tool ] Remove long-deprecated make-host-app-editable (#171715)
Fixes https://github.com/flutter/flutter/issues/59220
2025-07-08 00:09:26 +00:00
Ben Konyi
bcab634d60
[ Widget Preview ] Add a "Restart Widget Previewer" button to the widget preview scaffold (#171602)
This allows for developers to perform a hot restart on the preview
environment in the case they get into a bad state.

This change adds a `hotRestartPreviewer` method to the `widget-preview`
DTD service registered by the Flutter Tool, which is invoked by the
previewer.


![image](https://github.com/user-attachments/assets/477ce947-76a5-4e78-9769-0ee7f23f2ba6)
2025-07-04 17:57:24 +00:00
Ben Konyi
750b87f551
[ Widget Previews ] Add support for Pub Workspaces (#171538)
Updates the widget previewer to properly handle previews defined across
a workspace. This is effectively equivalent to displaying previews from
multiple individual projects, which required a fairly significant rework
to properly support:

 - resolving asset paths to the right project
 - loading assets across projects in the workspace
 - tracking changes to pubspec.yaml files across the workspace

While making this change, it became apparent that we don't need to
explicitly list the assets from the various projects explicitly in the
scaffold's pubspec.yaml as they're automatically pulled in by adding
those project's as dependencies and using the `package/$ASSET_PATH`
format to load the assets from the scaffold. This allowed for the
removal of a significant amount of logic related to building the
scaffold's pubspec.

Fixes https://github.com/flutter/flutter/issues/169268
2025-07-03 18:09:23 +00:00
Kishan Rathore
d72a4853c4
Feat: Add brightness export from widgets.dart (#169410)
Feat: Add brightness export from widgets.dart
fixes: #169294 

## 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 `///`).
- [ ] 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.
2025-06-26 20:16:25 +00:00
Ben Konyi
1ec94f9572
[ Widget Previews ] Use monospace fonts when displaying stack traces (#171167)
**Example:**
<img width="1149" alt="image"
src="https://github.com/user-attachments/assets/fc2a43a9-7622-479e-bca5-957b9d32d0e7"
/>
2025-06-25 16:15:13 +00:00
Robert Ancell
5d5355f48d
Show window on first frame on Linux (#170844)
Wait for the first Flutter frame before showing the window. This avoids
showing a window with empty Flutter content, which defaults to a black
background.

Part of https://github.com/flutter/flutter/issues/55427
Fixes https://github.com/flutter/flutter/issues/118269
2025-06-22 22:46:36 +00:00
Robert Ancell
d43d3928c0
Set the background in the Linux template (#170841)
Defaults to the same black as before, but this makes it easier for this
to be overridden if necessary.
2025-06-20 15:45:35 +00:00
Daco Harkes
d9c63168c8
[native assets] Roll dependencies (#170586)
Rolls the dependencies to the once published this week.

Covered by existing integration tests.
2025-06-15 14:53:12 +00:00