Matan Lurey
2b8aea7bd4
Update Engine-artifacts.md
( #165127 )
...
Part of https://github.com/flutter/flutter/issues/163896 .
Remove "this process is changing".
The process has changed :)
2025-03-13 17:47:52 +00:00
ash2moon
0aa0ad160e
add docs on android limitation for screen orientations ( #165021 )
...
Resolves https://github.com/flutter/flutter/issues/99149
## 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-03-13 17:26:32 +00:00
Loïc Sharma
627f1d200b
Add CupertinoSwitch widget of the week video ( #165093 )
2025-03-13 17:04:08 +00:00
Siva
0a937ba4da
Use AOT snapshot of kernel_worker ( #165103 )
...
Use AOT snapshot of kernel_worker
2025-03-13 16:58:20 +00:00
chunhtai
884de61855
adds status and alert roles ( #164925 )
...
<!--
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
-->
fixes https://github.com/flutter/flutter/issues/162287
fixes https://github.com/flutter/flutter/issues/162286
## Pre-launch Checklist
- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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].
<!-- 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-03-13 15:54:08 +00:00
Bartek Pacia
ea4cdcf39e
remove conditional code for handling very old AGP versions ( #162053 )
...
I think code paths for AGP version <7 aren't needed anymore.
I can also imagine it will be hard to do such dynamic stuff in Kotlin,
so it's better to get rid of it.
Also, I added some explicit types, this reduces the amount of
grey/unresolved identifiers in IntelliJ by quite a lot, making it easier
to understand code (again, this should help in conversion to Kotlin
later on).
## 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.
<!-- 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: Reid Baker <1063596+reidbaker@users.noreply.github.com>
2025-03-13 15:32:21 +00:00
Bruno Leroux
c6c518653c
Fix NavigationBar indicator overlay color ( #164484 )
...
## Description
This PR fixes NavigationBar lacking visual feedback on the active
destination indicator.
### Before:
The navigation indicator does not change color when hovered or focused:
https://github.com/user-attachments/assets/a1e67dee-4a38-4711-ba90-bdcd9bed3226
### After:
The navigation indicator color changes (slightly darker):
https://github.com/user-attachments/assets/1b1cc335-2cf4-4c41-9c53-696537707c72
## Related Issue
Fixes [NavigationBar lacks visual feedback when focused or
hovered](https://github.com/flutter/flutter/issues/163871 )
## Tests
- Updates several helper functions which are used by several tests.
- Updates several test: adding an Ink widget changes the coordinates
used in several tests because these coordinates are now relative to the
Ink offset.
- Will impact fours golden tests which were capturing the bad behavior
(indicator color not changing when hovered or focused).
2025-03-13 08:02:36 +00:00
engine-flutter-autoroll
f428fa07d4
Roll Fuchsia Linux SDK from KGG4cSZrg8NIGO10F... to qXOLczyRJadxMW0PK... ( #165107 )
...
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@google.com ,zra@google.com on the revert to ensure
that a human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-13 06:35:32 +00:00
Loïc Sharma
31587ea6b4
Add CupertinoCheckbox widget of the week video ( #165094 )
2025-03-13 06:08:25 +00:00
Loïc Sharma
db294f7bfe
[Cupertino] Improve comment in navigation bar docs ( #164067 )
2025-03-13 06:08:24 +00:00
Hannah Jin
6aaa4eb9e3
[framework]Add semantics role to table rows. ( #163337 )
...
**1. framework side:**
This PR Create semantics node for rows in table's
`assembleSemanticsNode` function.
**2. web side:**
I tested on my mac, and i need to remove the
`<flt-semantics-container>` between table and row, row and cell to
traverse inside table, removing those transfom intermediate containers
on web will be a bit of hassle and will be in another separate PR.
For example this code can only announce table but can’t get into cells.
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
<flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
<flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
<flt-semantics-container style="position: absolute; pointer-events: none; top: 0px; left: 0px;">
<flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
</flt-semantics-container>
</flt-semantics>
</flt-semantics-container>
</flt-semantics>
```
If I removed the in between `</flt-semantics-container>`, the code come
```
<flt-semantics id="flt-semantic-node-4" role="table" style="position: absolute; overflow: visible; width: 751px; height: 56px; transform-origin: 0px 0px 0px; transform: matrix(1, 0, 0, 1, 0, 56); pointer-events: none; z-index: 1;">
<flt-semantics id="flt-semantic-node-6" role="row" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: none;">
<flt-semantics id="flt-semantic-node-5" role="columnheader" aria-label="Name" style="position: absolute; overflow: visible; width: 751px; height: 56px; top: 0px; left: 0px; pointer-events: all;"></flt-semantics>
</flt-semantics>
</flt-semantics>
```
And I can get into table cells.
**3. Other aria-attributes:**
[aria-colcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colcount ) ,[aria-rowcount](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowcount )
[aria-colindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-colindex )
[aria-rowindex](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-rowindex )
* theres attributes are only needed if some rows and columns are hidden
in the Dom tree. havn't added them yet
aria-rowspan , aria-colspan :
*we currently don't support row span and col span in our widgets.
related issue: https://github.com/flutter/flutter/issues/21594
related: https://github.com/flutter/flutter/pull/162339
issue: https://github.com/flutter/flutter/issues/45205
## Pre-launch Checklist
- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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].
<!-- 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-03-13 04:39:28 +00:00
Jonah Williams
4670159521
Revert "[macOS] Enable Impeller by default on macOS." ( #165091 )
...
Reverts flutter/flutter#164572
2025-03-13 01:48:21 +00:00
Kate Lovett
df676dc6e7
Add onHover and onFocusChange callbacks for TabBar ( #164816 )
...
Fixes https://github.com/flutter/flutter/issues/159444
Fixes https://github.com/flutter/flutter/issues/146089
This adds callbacks to TabBar for onHover and onFocusChange.
They pipe through to the underlying Inkwell widget that is wrapped
around each Tab of the TabBar during build.
#### Alternatives
- I did consider adding these callbacks to Tab instead, but felt that
going through TabBar would be better. If implemented in Tab, the user
would need to define callbacks for each tab. This PR makes it so there
is only need for one callback, and the associated Tab index is provided.
Also, since the Inkwell is applied in the TabBar, it's kludgy to have to
extract that from the Tabs _in_ TabBar later to pass on to the Inkwell.
👃
- Digging in to the requests in the linked issues, the user wants to
change various stylings in response to these events.
WidgetStateProperties were considered, but there are so many potential
styling properties that going this route would require greatly
increasing the API surface here. Tab.child allows the user to provide
whatever widget they would like to have as the content. Being able to
modify Tab.child in response to these events is a better way go instead
of exposing a ton of different properties.
## 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].
<!-- 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-03-13 01:32:05 +00:00
Loïc Sharma
2a866a5757
[Cupertino] Fix incorrect scaffold docs ( #164068 )
2025-03-12 23:30:17 +00:00
Ashish Beck
9af4d746df
Added semanticsIdentifier
to Text
Widgets ( #163843 )
...
This PR aims to add `semanticsIdentifier` to `Text` and some of its
internal objects to pass the semantics information for adding identifier
to the semantics nodes
From the issue filed at #163842 , the following is a description of the
problem.
The [semantics
identifier](https://api.flutter.dev/flutter/semantics/SemanticsData/identifier.html )
helps in uniquely identifying elements using UI automation tools like
Appium, UIAutomator and XCUITests by setting identifiers that the screen
readers cannot see but the said tools can. This is especially useful
when working with a multi-lingual or multi-tenant app, where the element
IDs need to be unique but the content can be different. The `Semantics`
widget already has support for declaring it. However, the `Text` and
`Text.rich` variants only support setting `semanticsLabel` without
explicitly setting the identifiers. The widgets themselves can be
wrapped with a `Semantics` widget but it still does not cater for a rich
text that can have multiple text spans, each containing unique lables
and identifiers, and optionally gesture detectors for handling links.
Consider the following UI for two different tenants:
<img width="229" alt="Image"
src="https://github.com/user-attachments/assets/e8a24588-d94d-42fc-ba6c-ce39959207ae "
/>
Here, both the tenants utilise different strings to convey the same
message. The structure of the message stays the same so the identifiers
help in unifying the element identification process across the tenant
apps in the automation tools without having to write another script for
every other tenant.
Without the identifiers, the automation scripts require a rewrite per
tenant to be able to successfully locate the element and even tap on the
hyperlink.
# With PR Changes
## Appium Views
For the given sample code,
<details><summary>Text.rich Sample</summary>
```dart
Text.rich(
TextSpan(
text: 'This text contains both identifier and label.',
semanticsLabel: 'Custom label',
semanticsIdentifier: 'Custom identifier',
style: customStyle1,
children: <TextSpan>[
TextSpan(
text: ' While this one contains only label',
semanticsLabel: 'Hello world',
style: customStyle2,
),
const TextSpan(
text: ' and this contains only identifier,',
semanticsIdentifier: 'Hello to the automation tool',
),
TextSpan(
text: ' this text contains neither identifier nor label.',
style: customStyle2,
),
],
),
),
```
</details>
we have the following results with and without the PR code changes:
### With Identifier

### Without Identifier Changes

## Semantics Tree Dump
The followings are the semantics tree dump for both the cases
<details><summary>With Identifier</summary>
```
I/flutter ( 8185): SemanticsNode#0
I/flutter ( 8185): │ Rect.fromLTRB(0.0, 0.0, 1080.0, 2154.0)
I/flutter ( 8185): │
I/flutter ( 8185): └─SemanticsNode#1
I/flutter ( 8185): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3) scaled by 2.8x
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): └─SemanticsNode#2
I/flutter ( 8185): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3)
I/flutter ( 8185): │ sortKey: OrdinalSortKey#9e46a(order: 0.0)
I/flutter ( 8185): │
I/flutter ( 8185): └─SemanticsNode#3
I/flutter ( 8185): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3)
I/flutter ( 8185): │ flags: scopesRoute
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#4
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 40.0, 376.7, 88.0)
I/flutter ( 8185): │ label: "Demonstration of automation tools support in Semantics
I/flutter ( 8185): │ for Text and RichText"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#5
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 104.0, 376.7, 204.0)
I/flutter ( 8185): │ label: "The identifier property in Semantics widget is used for
I/flutter ( 8185): │ UI testing with tools that work by querying the native
I/flutter ( 8185): │ accessibility, like UIAutomator, XCUITest, or Appium. It can be
I/flutter ( 8185): │ matched with CommonFinders.bySemanticsIdentifier."
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#6
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 220.0, 121.9, 244.0)
I/flutter ( 8185): │ label: "Text Example:"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#7
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 244.0, 376.7, 304.0)
I/flutter ( 8185): │ identifier: "This is a custom identifier that only the automation
I/flutter ( 8185): │ tools are able to see"
I/flutter ( 8185): │ label: "This is a custom label"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#8
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 320.0, 155.1, 344.0)
I/flutter ( 8185): │ label: "Text.rich Example:"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#9
I/flutter ( 8185): │ │ Rect.fromLTRB(16.0, 344.0, 376.7, 400.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#10
I/flutter ( 8185): │ │ Rect.fromLTRB(-4.0, -3.0, 280.0, 23.0)
I/flutter ( 8185): │ │ identifier: "Custom identifier"
I/flutter ( 8185): │ │ label: "Custom label"
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#06bc7(order: 0.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#11
I/flutter ( 8185): │ │ Rect.fromLTRB(-4.0, -1.0, 345.0, 42.0)
I/flutter ( 8185): │ │ label: "Hello world"
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#32a12(order: 1.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#12
I/flutter ( 8185): │ │ Rect.fromLTRB(130.0, 17.0, 348.0, 43.0)
I/flutter ( 8185): │ │ identifier: "Hello to the automation tool"
I/flutter ( 8185): │ │ label: " and this contains only identifier,"
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#49d25(order: 2.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ └─SemanticsNode#13
I/flutter ( 8185): │ Rect.fromLTRB(-4.0, 19.0, 351.0, 60.0)
I/flutter ( 8185): │ label: " this text contains neither identifier nor label."
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │ sortKey: OrdinalSortKey#f3624(order: 3.0)
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#14
I/flutter ( 8185): │ Rect.fromLTRB(16.0, 416.0, 181.0, 440.0)
I/flutter ( 8185): │ label: "Multi-tenant Example:"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#15
I/flutter ( 8185): │ │ Rect.fromLTRB(108.3, 440.0, 284.5, 480.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#16
I/flutter ( 8185): │ │ Rect.fromLTRB(-1.0, -3.0, 115.0, 23.0)
I/flutter ( 8185): │ │ identifier: "please_open"
I/flutter ( 8185): │ │ label: "Please open the "
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#ea831(order: 0.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#17
I/flutter ( 8185): │ │ Rect.fromLTRB(106.0, -3.0, 177.0, 23.0)
I/flutter ( 8185): │ │ identifier: "product_name"
I/flutter ( 8185): │ │ label: "product 1"
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#589fe(order: 1.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ ├─SemanticsNode#18
I/flutter ( 8185): │ │ Rect.fromLTRB(-4.0, -3.0, 177.0, 43.0)
I/flutter ( 8185): │ │ identifier: "to_use_app"
I/flutter ( 8185): │ │ label:
I/flutter ( 8185): │ │ "
I/flutter ( 8185): │ │ to use this app."
I/flutter ( 8185): │ │ textDirection: ltr
I/flutter ( 8185): │ │ sortKey: OrdinalSortKey#c2762(order: 2.0)
I/flutter ( 8185): │ │
I/flutter ( 8185): │ └─SemanticsNode#19
I/flutter ( 8185): │ Rect.fromLTRB(95.0, 17.0, 181.0, 43.0)
I/flutter ( 8185): │ actions: tap
I/flutter ( 8185): │ flags: isLink
I/flutter ( 8185): │ identifier: "learn_more_link"
I/flutter ( 8185): │ label: " Learn more"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │ sortKey: OrdinalSortKey#7d560(order: 3.0)
I/flutter ( 8185): │
I/flutter ( 8185): └─SemanticsNode#20
I/flutter ( 8185): │ Rect.fromLTRB(97.0, 496.0, 295.7, 536.0)
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#21
I/flutter ( 8185): │ Rect.fromLTRB(11.0, -3.0, 127.0, 23.0)
I/flutter ( 8185): │ identifier: "please_open"
I/flutter ( 8185): │ label: "Please open the "
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │ sortKey: OrdinalSortKey#7bb57(order: 0.0)
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#22
I/flutter ( 8185): │ Rect.fromLTRB(118.0, -3.0, 188.0, 23.0)
I/flutter ( 8185): │ identifier: "product_name"
I/flutter ( 8185): │ label: "product 2"
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │ sortKey: OrdinalSortKey#6c7c6(order: 1.0)
I/flutter ( 8185): │
I/flutter ( 8185): ├─SemanticsNode#23
I/flutter ( 8185): │ Rect.fromLTRB(-4.0, -3.0, 188.0, 43.0)
I/flutter ( 8185): │ identifier: "to_use_app"
I/flutter ( 8185): │ label:
I/flutter ( 8185): │ "
I/flutter ( 8185): │ to access this app."
I/flutter ( 8185): │ textDirection: ltr
I/flutter ( 8185): │ sortKey: OrdinalSortKey#1e8e7(order: 2.0)
I/flutter ( 8185): │
I/flutter ( 8185): └─SemanticsNode#24
I/flutter ( 8185): Rect.fromLTRB(117.0, 17.0, 203.0, 43.0)
I/flutter ( 8185): actions: tap
I/flutter ( 8185): flags: isLink
I/flutter ( 8185): identifier: "learn_more_link"
I/flutter ( 8185): label: " Find out more"
I/flutter ( 8185): textDirection: ltr
I/flutter ( 8185): sortKey: OrdinalSortKey#db7e6(order: 3.0)
```
</details>
<details><summary>Without Identifier Changes</summary>
```
I/flutter (18659): SemanticsNode#0
I/flutter (18659): │ Rect.fromLTRB(0.0, 0.0, 1080.0, 2154.0)
I/flutter (18659): │
I/flutter (18659): └─SemanticsNode#1
I/flutter (18659): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3) scaled by 2.8x
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): └─SemanticsNode#2
I/flutter (18659): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3)
I/flutter (18659): │ sortKey: OrdinalSortKey#102d4(order: 0.0)
I/flutter (18659): │
I/flutter (18659): └─SemanticsNode#3
I/flutter (18659): │ Rect.fromLTRB(0.0, 0.0, 392.7, 783.3)
I/flutter (18659): │ flags: scopesRoute
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#4
I/flutter (18659): │ Rect.fromLTRB(16.0, 40.0, 376.7, 88.0)
I/flutter (18659): │ label: "Demonstration of automation tools support in Semantics
I/flutter (18659): │ for Text and RichText"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#5
I/flutter (18659): │ Rect.fromLTRB(16.0, 104.0, 376.7, 204.0)
I/flutter (18659): │ label: "The identifier property in Semantics widget is used for
I/flutter (18659): │ UI testing with tools that work by querying the native
I/flutter (18659): │ accessibility, like UIAutomator, XCUITest, or Appium. It can be
I/flutter (18659): │ matched with CommonFinders.bySemanticsIdentifier."
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#6
I/flutter (18659): │ Rect.fromLTRB(16.0, 220.0, 121.9, 244.0)
I/flutter (18659): │ label: "Text Example:"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#7
I/flutter (18659): │ Rect.fromLTRB(16.0, 244.0, 376.7, 304.0)
I/flutter (18659): │ label: "This is a custom label"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#8
I/flutter (18659): │ Rect.fromLTRB(16.0, 320.0, 155.1, 344.0)
I/flutter (18659): │ label: "Text.rich Example:"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#9
I/flutter (18659): │ Rect.fromLTRB(16.0, 344.0, 376.7, 400.0)
I/flutter (18659): │ label: "Custom labelHello world and this contains only
I/flutter (18659): │ identifier, this text contains neither identifier nor label."
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#10
I/flutter (18659): │ Rect.fromLTRB(16.0, 416.0, 181.0, 440.0)
I/flutter (18659): │ label: "Multi-tenant Example:"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#11
I/flutter (18659): │ │ Rect.fromLTRB(108.3, 456.0, 284.5, 496.0)
I/flutter (18659): │ │
I/flutter (18659): │ ├─SemanticsNode#12
I/flutter (18659): │ │ Rect.fromLTRB(-4.0, -3.0, 177.0, 43.0)
I/flutter (18659): │ │ label:
I/flutter (18659): │ │ "Please open the product 1
I/flutter (18659): │ │ to use this app."
I/flutter (18659): │ │ textDirection: ltr
I/flutter (18659): │ │ sortKey: OrdinalSortKey#493fc(order: 0.0)
I/flutter (18659): │ │
I/flutter (18659): │ └─SemanticsNode#13
I/flutter (18659): │ Rect.fromLTRB(95.0, 17.0, 181.0, 43.0)
I/flutter (18659): │ actions: tap
I/flutter (18659): │ flags: isLink
I/flutter (18659): │ label: " Learn more"
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │ sortKey: OrdinalSortKey#587bf(order: 1.0)
I/flutter (18659): │
I/flutter (18659): └─SemanticsNode#14
I/flutter (18659): │ Rect.fromLTRB(88.9, 512.0, 303.8, 552.0)
I/flutter (18659): │
I/flutter (18659): ├─SemanticsNode#15
I/flutter (18659): │ Rect.fromLTRB(-4.0, -3.0, 196.0, 43.0)
I/flutter (18659): │ label:
I/flutter (18659): │ "Please open the product 2
I/flutter (18659): │ to access this app."
I/flutter (18659): │ textDirection: ltr
I/flutter (18659): │ sortKey: OrdinalSortKey#69083(order: 0.0)
I/flutter (18659): │
I/flutter (18659): └─SemanticsNode#16
I/flutter (18659): Rect.fromLTRB(117.0, 17.0, 219.0, 43.0)
I/flutter (18659): actions: tap
I/flutter (18659): flags: isLink
I/flutter (18659): label: " Find out more"
I/flutter (18659): textDirection: ltr
I/flutter (18659): sortKey: OrdinalSortKey#ed706(order: 1.0)
```
</details>
fixes https://github.com/flutter/flutter/issues/163842
---------
Co-authored-by: chunhtai <47866232+chunhtai@users.noreply.github.com>
2025-03-12 23:30:16 +00:00
Jonah Williams
6f1c04f54f
Change fallback behavior for devices pre API 29 to Skia regardless of Impeller state. ( #165075 )
...
There are currently a large amount of crashes coming from older devices
that we don't have good test coverage for. For now, lets remove the
fallback to ImpellerGLES on old devices and instead use SkiaGLES, which
we know from experience works on these older devices.
2025-03-12 22:28:06 +00:00
René Kilczan
90d6f19d9a
Keyboard type update ( #164274 )
...
This fixes the bug #163013 by detecting changes of the `keyboardType`.
## 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].
- [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].
<!-- 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-03-12 21:02:48 +00:00
Victoria Ashworth
03f1208721
Fix SwiftPM scheme migration to handle when there are no BuildActionEntries ( #164660 )
...
An Xcode scheme may or may not have `BuildActionEntries`. When migrating
to SwiftPM, if Flutter cannot find `BuildActionEntries` in the xcscheme,
append the `PreAction` to the end of the `BuildAction`.
Fixes https://github.com/flutter/flutter/issues/163086 .
## 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].
<!-- 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-03-12 20:53:50 +00:00
davidhicks980
76d7910e95
[widgets/raw_menu_anchor.dart] Fixed minor typos and applied style guide suggestions ( #162805 )
...
This PR fixes minor typos in the RawMenuAnchor docs.
I didn't include tests because the changes are minor.
## 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.
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-03-12 20:52:07 +00:00
LouiseHsu
895cab5bd7
[a11y] fixes overlayPortals not showing VoiceControl labels ( #164754 )
...
Fixes https://github.com/flutter/flutter/issues/157753
Even when a `uiaccessibilityelement` is marked as
`accessibilityRespondsToUserInteraction`, if it's spatially far away
enough from its parent's `accessibilityFrame`, a VoiceControl label will
not be created for it. In this PR, I set the parent
`SemanticObjectContainer`'s `accessibilityFrame` so it is the minimum
rect that will cover all it's children.
## 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-03-12 20:40:07 +00:00
Jonah Williams
b4a04cc866
[Impeller] fix crash when loading shader before AiksContext is initialized. ( #165071 )
...
If the aiks context isn't initialized, we will create one on the fly
which can actually crash on the GLES backend. Add a check if the context
is already initialized and cancel precaching of the shader which
triggers this crash. The precache is only a performance improvement and
is not critical for usability.
Fixes https://github.com/flutter/flutter/issues/164757
2025-03-12 19:20:10 +00:00
Jason Simmons
a7a4d0bd2b
Write macOS universal gen_snapshot binaries to a separate output directory ( #164667 )
...
Also use the name "gen_snapshot" when building for Android targets
instead of appending a target architecture to the filename.
This allows flutter_tools to find the universal gen_snapshot binary when
using a locally built engine. Previously the tools would search
directories like "clang_x64" and find build outputs that may not match
the host architecture.
Moving the universal gen_snapshot binary to a separate directory avoids
conflicts with Dart's gen_snapshot binary, which is placed at the root
of the target output directory.
2025-03-12 19:02:55 +00:00
gaaclarke
f0992e0965
Fixes rendering text rotated 180 degrees ( #165008 )
...
fixes https://github.com/flutter/flutter/issues/164958
## 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].
<!-- 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-03-12 18:14:16 +00:00
Jason Simmons
6316b48bca
Check for a null codec in MultiFrameImageStreamCompleter after calling _emitFrame ( #165009 )
...
_emitFrame invokes image listeners. A listener callback could remove all
of the MultiFrameImageStreamCompleter's listeners, resulting in a
_maybeDispose call that destroys the codec.
Fixes https://github.com/flutter/flutter/issues/164944
Fixes https://github.com/flutter/flutter/issues/164537
2025-03-12 17:17:30 +00:00
Mouad Debbar
212f66fbe7
Support detection of light and dark system colors ( #164933 )
...
Part of https://github.com/flutter/flutter/issues/118853
This PR is an enhancement to
https://github.com/flutter/flutter/pull/163335 to provide detection of
system colors for both light and dark mode. This is needed for the
construction of a
[`highContrastTheme`](https://api.flutter.dev/flutter/material/MaterialApp/highContrastTheme.html )
and
[`highContrastDarkTheme`](https://api.flutter.dev/flutter/material/MaterialApp/highContrastDarkTheme.html ).
2025-03-12 16:36:11 +00:00
LongCatIsLooong
963f23e30e
computeDryLayout
access size bad (#164663 )
...
Asserts if `RenderBox.size` is accessed in `computeDryLayout`
Also changes `x is RenderObject` to `x != null` when x's static type is
`RenderObject?`.
## Pre-launch Checklist
- [ ] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [ ] 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].
<!-- 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-03-12 16:15:06 +00:00
engine-flutter-autoroll
a3f63a75b0
Roll Packages from c392bfe5bfb3 to 9cc6f370eff8 (1 revision) ( #165056 )
...
c392bfe5bf...9cc6f370ef
2025-03-11 jason-simmons@users.noreply.github.com [video_player_android]
Provide the current surface to the new ExoPlayer in
TextureVideoPlayer.onSurfaceAvailable (flutter/packages#8818 )
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-12 15:59:21 +00:00
Srujan Gaddam
0bdb4d68b5
[flutter_tools] Call reassemble with DWDS 24.3.7 and update hot reload and restart analytics ( #165006 )
...
https://github.com/dart-lang/webdev/issues/2584
Reassemble was being called in DWDS in the injected client until
v24.3.7. Flutter tools should now instead be the one to call the service
extension. Now that it's in Flutter tools, we can also report how long
it took. Similarly, we should update analytics on various things like,
whether there was a reload rejection, how long the compile took, and
more.
Adds test to check that these analytics are being reported correctly.
## 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-03-12 15:16:49 +00:00
Harri Kirik
eef31a1c2b
Update Mac_mokey microbenchmarks with issue to the bringup: true in ci config for easier discovery ( #164694 )
...
Update the comment in .ci.yaml with the issue link for easier discovery.
Related issue: #156506
Related discussion: https://github.com/flutter/flutter/pull/162000
## 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-03-12 14:04:10 +00:00
Taha Tesser
234b50aa53
Update Material 2 IconButton
padding documentation ( #164383 )
...
Fixes [Icon button with padding with wrong splash and highlight
position](https://github.com/flutter/flutter/issues/31194 )
### Description
This PR updates Material 2 `IconButton` padding documentation where
using disproportionate padding.
## 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].
- [ ] 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].
<!-- 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-03-12 09:51:35 +00:00
Siva
c3565e92d4
Roll Dart from 2d5dfe32cf2e to 404de187d1e5 ( #165026 )
...
https://dart.googlesource.com/sdk.git/+log/2d5dfe32cf2e..404de187d1e5
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-177.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-176.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-175.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-174.0.dev
2025-03-11 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-173.0.dev
2025-03-10 dart-internal-merge@dart-ci-internal.iam.gserviceaccount.com
Version 3.8.0-172.0.dev
2025-03-12 05:53:25 +00:00
engine-flutter-autoroll
25e5ffd8c2
Roll Fuchsia Linux SDK from ngvNj-Ffcrgs_jPdQ... to KGG4cSZrg8NIGO10F... ( #165014 )
...
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/fuchsia-linux-sdk-flutter
Please CC chinmaygarde@google.com ,zra@google.com on the revert to ensure
that a human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-11 23:27:32 +00:00
Kevin Moore
292496f80d
[tools, web] Make sure to copy the dump-info file if dump-info is used ( #165013 )
...
Also fixed the wording of the dump-info build flag
2025-03-11 22:52:06 +00:00
Andrew Kolos
81139dbcab
in et
, support building the Dart SDK with dynamic module support ( #165003 )
...
usage example: `et build -c host_release_arm64
--gn-args="--no-prebuilt-dart-sdk,--dart_dynamic_modules"`
<details>
<summary> Pre-launch checklist </summary>
- [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.
</details>
<!-- 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-03-11 20:21:46 +00:00
Kevin Moore
8821a27de8
[web_ui] Tighten up font fallback code ( #164951 )
...
Make one type and many members private
Make some fields final
2025-03-11 19:48:23 +00:00
engine-flutter-autoroll
04d710d31a
Roll Packages from 464cea53002e to c392bfe5bfb3 (1 revision) ( #164999 )
...
464cea5300...c392bfe5bf
2025-03-10 engine-flutter-autoroll@skia.org Roll Flutter from
6b93cf93c100 to b16430b2fd57 (21 revisions) (flutter/packages#8845 )
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC flutter-ecosystem@google.com on the revert to ensure that a
human
is aware of the problem.
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-11 18:28:02 +00:00
gaaclarke
61a5fe7929
Switched the font atlas to discrete math for hash keys ( #164822 )
...
issue: https://github.com/flutter/flutter/issues/164606
This is a refactor of how we store font atlas data. Previously we were
using floating point values with custom hash functions as keys. This was
very hard to debug. This change instead makes all keys used in the font
atlas discrete.
The hope was that this might fix
https://github.com/flutter/flutter/issues/164606 , or at least make it
easier to debug. It didn't fix the issue.
## 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].
<!-- 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-03-11 18:12:51 +00:00
engine-flutter-autoroll
1cfbc3c106
Roll Skia from 9c42f62925a7 to adf8f8a92721 (1 revision) ( #164986 )
...
https://skia.googlesource.com/skia.git/+log/9c42f62925a7..adf8f8a92721
2025-03-11 drott@chromium.org [Fontations] Use improved stream to data
conversion
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com ,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-11 17:58:16 +00:00
Reid Baker
463e751640
Convert AppLinkSettings to kotlin ( #164391 )
...
Fixes #162107
Commands that were helpful when working on this pr.
`dart dev/tools/bin/generate_gradle_lockfiles.dart
--no-gradle-generation` from flutter/flutter root.
`./gradlew test` from packages/flutter_tools/gradle.
`git add -- ":*.lockfile"` for adding only lockfile changes.
`../../bin/cache/dart-sdk/bin/dart bin/test_runner.dart test -t
android_java11_dependency_smoke_tests` from dev/devicelab
`ktlint --editorconfig=dev/bots/test/analyze-test-input/.editorconfig
--baseline=dev/bots/test/analyze-test-input/ktlint-baseline.xml
packages/flutter_tools/gradle/src/ --format` formatting kotlin code.
Need ktlint 1.5
## 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-03-11 17:00:17 +00:00
StanleyCocos
9d2dcea4ab
feat(FixedExtentScrollController): Add parent class properties to the constructor. ( #163190 )
...
This request is to add configurable parameters keepScrollOffset and
debugLabel to FixedExtentScrollController.
- Fixes https://github.com/flutter/flutter/issues/162972
## 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-03-11 16:33:03 +00:00
yakagami
7bf8837116
Clarify performacne of SingleTickerProviderStateMixin vs TickerProviderStateMixin ( #164870 )
...
Adds the following line to
[TickerProviderStateMixin](https://api.flutter.dev/flutter/widgets/TickerProviderStateMixin-mixin.html ):
>Using one [TickerProviderStateMixin] twice is more efficient than two
[SingleTickerProviderStateMixin]s.
This is based on a discussion on Flutter Discord with @chunhtai. From
what I understood, creating multiple `SingleTickerProviderStateMixin`s
is more expensive because you need two different state which is
relatively costly compared to having just one. Not sure if this line
should should be qualified like "Using one [TickerProviderStateMixin]
twice is *generally* more efficient than two
[SingleTickerProviderStateMixin]s" or similar.
This change should be reviewed for correctness as I don't actually
understand enough about the difference between
`TickerProviderStateMixin` and `SingleTickerProviderStateMixin`.
Closes #164869
<details>
<summary>
Example case where this was relevant (click)
</summary>
I was avoiding using `TickerProviderStateMixin` like so:
```dart
_animationController = AnimationController.unbounded(vsync: this)
..addListener(() {
_updateScale(_animationController.value);
});
//could have just set `vsync` to `this` if using `TickerProviderStateMixin`
WidgetsBinding.instance.addPostFrameCallback((_) {
_verticalAnimationController =
AnimationController.unbounded(vsync: _verticalController.position.context.vsync)
..addListener(() {
_verticalController.jumpTo(_verticalAnimationController.value);
});
_horizontalAnimationController =
AnimationController.unbounded(vsync: _horizontalController.position.context.vsync)
..addListener(() {
_horizontalController.jumpTo(_horizontalAnimationController.value);
});
});
```
Instead of just:
```dart
_animationController = AnimationController.unbounded(vsync: this)
..addListener(() {
_updateScale(_animationController.value);
});
_verticalAnimationController = AnimationController.unbounded(vsync: this)
..addListener(() {
_verticalController.jumpTo(_verticalAnimationController.value);
});
_horizontalAnimationController = AnimationController.unbounded(vsync: this)
..addListener(() {
_horizontalController.jumpTo(_horizontalAnimationController.value);
});
```
</details>
## 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].
<!-- 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-03-11 16:33:03 +00:00
Robert Ancell
39dc5717d5
Consolidate GTK mocks ( #164890 )
...
This was split across three files, consolidate into one.
---------
Co-authored-by: Harlen Batagelo <hbatagelo@gmail.com>
2025-03-11 15:30:09 +00:00
Jason Simmons
b60d60a166
Roll Vulkan memory allocator to c788c521 ( #164825 )
...
Fixes https://github.com/flutter/flutter/issues/162617
2025-03-11 13:58:36 +00:00
Matej Knopp
b1d0ffb6d2
[Windows] Make lifecycle manager updates atomic ( #164872 )
...
Required for multi-window.
On windows the `LifecycleManager` currently sends the lifecycle event as
soon as windows message is processed. This however causes problems when
changing focus between application windows.
When switching focus from HWND1 to HWND2, HWND1 first gets unfocused,
followed by HWND2 getting focused. After HWND1 gets unfocused,
`LifecycleManager` immediately notifies the framework that the
application is inactive, which is wrong as the application never went
into inactive state, followed by subsequent call to put the application
in resumed state when HWND2 is focused. Because this happens very
quickly, sometimes focus manager gets into inconsistent state.
To resolve this `LifecycleManager` should gather the all the changes
while window sends the messages and then notify the framework atomically
in next run loop turn.
This PR also simplifies the logic in `LifecycleManager` through which
the application state is derived from window states.
This PR removes engine forcing `resumed` lifecycle state at startup. I'm
not entirely sure what the point of this was - the state can and should
be determined solely from window states, this just seems to muddy the
state logic. Also it happens before the framework is even listening to
state changes.
The mutex in `WindowsLifecycleManager` is removed. Not sure why it was
there.
## 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].
<!-- 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: Matthew Kosarek <matt.kosarek@canonical.com>
Co-authored-by: Harlen Batagelo <hbatagelo@gmail.com>
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
2025-03-11 11:21:18 +00:00
Matej Knopp
91d195f642
[macOS] Prepare TextInputPlugin for multi-view ( #164014 )
...
Notable changes:
- `FlutterTextInputPlugin` is now owned by `FlutterEngine`.
- `FlutterTextInputPlugin` is only associated with a
`FlutterViewController` while having active IME connection.
- Changed private state of `TextInputPlugin` from properties to ivars.
There is no need for these to be properties, and the state was accessed
both as ivars and properties which seemed inconsistent.
- Updated test to reflect the changes
I've also tested everything including voice-over to make sure
accessibility didn't regress.
## 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].
<!-- 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-03-11 11:12:10 +00:00
engine-flutter-autoroll
8c04b6fc9a
Roll Skia from d1c5490ca749 to 9c42f62925a7 (1 revision) ( #164965 )
...
https://skia.googlesource.com/skia.git/+log/d1c5490ca749..9c42f62925a7
2025-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll Dawn
from a04b51ef7139 to 06dd9ef55ce2 (18 revisions)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC
chinmaygarde@google.com ,danieldilan@google.com,kjlubick@google.com on
the revert to ensure that a human
is aware of the problem.
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-11 10:44:36 +00:00
Matej Knopp
92fdf29e6f
[Linux] Move rendering to raster thread ( #161879 )
...
Fixes https://github.com/flutter/flutter/issues/155045
*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].
<!-- 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: Robert Ancell <robert.ancell@canonical.com>
2025-03-11 09:30:03 +00:00
engine-flutter-autoroll
7b07e597f5
Roll Skia from b9f4a95a5976 to d1c5490ca749 (1 revision) ( #164961 )
...
https://skia.googlesource.com/skia.git/+log/b9f4a95a5976..d1c5490ca749
2025-03-11 skia-autoroll@skia-public.iam.gserviceaccount.com Roll ANGLE
from 6c2737be88ac to f38a081cdea4 (6 revisions)
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/skia-flutter-autoroll
Please CC codefu@google.com ,danieldilan@google.com,kjlubick@google.com
on the revert to ensure that a human
is aware of the problem.
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose
To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
2025-03-11 08:42:26 +00:00
Bernardo Ferrari
b35c6be8c9
Add withDurationAndBounce
to SpringDescription
( #164411 )
...
Part of https://github.com/flutter/flutter/issues/152587
### Description:
With `withDurationAndBounce` (we could also rename to `withDuration`),
the user only has to worry about a single attribute: the bounce (and
duration, but they would have to worry with duration anyway. If they
don't, there is a default value already). The standard
`SpringDescription` has 3 values, so it is way more abstract. This
should help a lot people to make beautiful spring animations using
Flutter.
<img width="838" alt="image"
src="https://github.com/user-attachments/assets/4d0dccc7-0f97-4a13-99a4-268228b87f08 "
/>
### Negative bounce:
I didn't enable bounce to be negative because the behavior is super
tricky. I don't know what formula Apple is using, but seems like it is
not public. There are many different formulas we can use, including the
one provided on the original issue, but then there is the risk of people
complaining it works differently than SwiftUI. I need to check if other
projects (react-spring, framer motion) support negative bounce, but
feels like this is something 99.9999% of people wouldn't expect or use,
so I think we are safe. I couldn't find a single usage of negative
bounce on Swift in all GitHub (without a duration, using code-search, vs
5k cases with positive values). Not even sure the todo is needed, but
won't hurt.
### Comparison
<details>
<summary>Dart vs Swift testing results</summary>
```dart
testWidgets('Spring Simulation Tests - Matching SwiftUI', (WidgetTester tester) async {
// Test cases matching the Swift code's ranges
List<({Duration duration, double bounce})> testCases = [
(duration: const Duration(milliseconds: 100), bounce: 0.0),
(duration: const Duration(milliseconds: 100), bounce: 0.3),
(duration: const Duration(milliseconds: 100), bounce: 0.8),
(duration: const Duration(milliseconds: 100), bounce: 1.0),
(duration: const Duration(milliseconds: 500), bounce: 0.0),
(duration: const Duration(milliseconds: 500), bounce: 0.3),
(duration: const Duration(milliseconds: 500), bounce: 0.8),
(duration: const Duration(milliseconds: 500), bounce: 1.0),
(duration: const Duration(milliseconds: 1000), bounce: 0.0),
(duration: const Duration(milliseconds: 1000), bounce: 0.3),
(duration: const Duration(milliseconds: 1000), bounce: 0.8),
(duration: const Duration(milliseconds: 1000), bounce: 1.0),
(duration: const Duration(milliseconds: 2000), bounce: 0.0),
(duration: const Duration(milliseconds: 2000), bounce: 0.3),
(duration: const Duration(milliseconds: 2000), bounce: 0.8),
(duration: const Duration(milliseconds: 2000), bounce: 1.0),
];
for (final testCase in testCases) {
SpringDescription springDesc = SpringDescription.withDurationAndBounce(
duration: testCase.duration,
bounce: testCase.bounce,
);
print(
'Duration: ${testCase.duration.inMilliseconds / 1000}, Bounce: ${testCase.bounce}, Mass: ${springDesc.mass}, Stiffness: ${springDesc.stiffness}, Damping: ${springDesc.damping}',
);
}
});
```
Output:
```
Duration: 0.1, Bounce: 0.0, Mass: 1.0, Stiffness: 3947.8417604357423, Damping: 125.66370614359171
Duration: 0.1, Bounce: 0.3, Mass: 1.0, Stiffness: 3947.8417604357423, Damping: 87.9645943005142
Duration: 0.1, Bounce: 0.8, Mass: 1.0, Stiffness: 3947.8417604357423, Damping: 25.132741228718338
Duration: 0.1, Bounce: 1.0, Mass: 1.0, Stiffness: 3947.8417604357423, Damping: 0.0
Duration: 0.5, Bounce: 0.0, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 25.132741228718345
Duration: 0.5, Bounce: 0.3, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 17.59291886010284
Duration: 0.5, Bounce: 0.8, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 5.026548245743668
Duration: 0.5, Bounce: 1.0, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 0.0
Duration: 1.0, Bounce: 0.0, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 12.566370614359172
Duration: 1.0, Bounce: 0.3, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 8.79645943005142
Duration: 1.0, Bounce: 0.8, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 2.513274122871834
Duration: 1.0, Bounce: 1.0, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 0.0
Duration: 2.0, Bounce: 0.0, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 6.283185307179586
Duration: 2.0, Bounce: 0.3, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 4.39822971502571
Duration: 2.0, Bounce: 0.8, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 1.256637061435917
Duration: 2.0, Bounce: 1.0, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 0.0
```
Swift:
```swift
import SwiftUI
import XCTest
class SpringParameterTests: XCTestCase {
func printSpringParameters(duration: Double, bounce: Double) {
let spring = Spring(duration: duration, bounce: bounce) // Let SwiftUI do its thing
print("Duration: \(duration), Bounce: \(bounce), Mass: \(spring.mass), Stiffness: \(spring.stiffness), Damping: \(spring.damping)")
}
func testParameterExtraction() {
// Test a range of durations and bounces
let durations: [Double] = [0.1, 0.5, 1.0, 2.0]
let bounces: [Double] = [0.0, 0.3, 0.8, 1.0]
for duration in durations {
for bounce in bounces {
printSpringParameters(duration: duration, bounce: bounce)
}
}
}
}
```
Output:
```
Duration: 0.1, Bounce: 0.0, Mass: 1.0, Stiffness: 3947.8417604357433, Damping: 125.66370614359172
Duration: 0.1, Bounce: 0.3, Mass: 1.0, Stiffness: 3947.841760435743, Damping: 87.96459430051421
Duration: 0.1, Bounce: 0.8, Mass: 1.0, Stiffness: 3947.8417604357423, Damping: 25.132741228718338
Duration: 0.1, Bounce: 1.0, Mass: 1.0, Stiffness: 3947.8417604357433, Damping: 0.0
Duration: 0.5, Bounce: 0.0, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 25.132741228718345
Duration: 0.5, Bounce: 0.3, Mass: 1.0, Stiffness: 157.9136704174297, Damping: 17.59291886010284
Duration: 0.5, Bounce: 0.8, Mass: 1.0, Stiffness: 157.9136704174297, Damping: 5.026548245743668
Duration: 0.5, Bounce: 1.0, Mass: 1.0, Stiffness: 157.91367041742973, Damping: 0.0
Duration: 1.0, Bounce: 0.0, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 12.566370614359172
Duration: 1.0, Bounce: 0.3, Mass: 1.0, Stiffness: 39.478417604357425, Damping: 8.79645943005142
Duration: 1.0, Bounce: 0.8, Mass: 1.0, Stiffness: 39.478417604357425, Damping: 2.513274122871834
Duration: 1.0, Bounce: 1.0, Mass: 1.0, Stiffness: 39.47841760435743, Damping: 0.0
Duration: 2.0, Bounce: 0.0, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 6.283185307179586
Duration: 2.0, Bounce: 0.3, Mass: 1.0, Stiffness: 9.869604401089356, Damping: 4.39822971502571
Duration: 2.0, Bounce: 0.8, Mass: 1.0, Stiffness: 9.869604401089356, Damping: 1.256637061435917
Duration: 2.0, Bounce: 1.0, Mass: 1.0, Stiffness: 9.869604401089358, Damping: 0.0
```
There are minor differences which should be rounding errors.
</details>
2025-03-11 07:44:29 +00:00
Srivats Venkataraman
d452d04a07
#163840 - CupertinoButton cursor doesn't change to clickable on desktop ( #164196 )
...
<!--
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
-->
This PR addresses Issue number: 163840, where when hovering over a
Cupertino button the mouse cursor wouldn't switch to clickable and there
wasn't any option to configure it.
Adds Mouse cursor to CupertinoButton, CupertinoButton.Filled and
CupertinoButton.Tinted
Fixes https://github.com/flutter/flutter/issues/163840
Part of https://github.com/flutter/flutter/issues/58192
Demo of the changes
https://github.com/user-attachments/assets/2e5d874e-cdfe-44bf-9710-bbbde99be3f7
Code snippet showing new behavior
```dart
import 'package:flutter/cupertino.dart';
void main() => runApp(
// const Center(child: Text('Hello, world!', key: Key('title'), textDirection: TextDirection.ltr)),
CupertinoApp(
theme: const CupertinoThemeData(
brightness: Brightness.light,
),
home: Center(
child: Column(
spacing: 5.0,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
CupertinoButton(
onPressed: (){},
child: const Text('Default Cursor'),
),
CupertinoButton(
onPressed: (){},
mouseCursor: SystemMouseCursors.grab,
child: const Text('Custom Cursor'),
),
CupertinoButton.filled(
onPressed: (){},
mouseCursor: SystemMouseCursors.copy,
child: const Text('Custom Cursor 2'),
),
CupertinoButton.tinted(
onPressed: (){},
mouseCursor: SystemMouseCursors.help,
child: const Text('Custom Cursor 2'),
),
],
)
),
),
);
```
*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].*
## 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].
<!-- 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 <dkwingsmt@users.noreply.github.com>
Co-authored-by: Tirth <pateltirth454@gmail.com>
Co-authored-by: Victor Sanni <victorsanniay@gmail.com>
2025-03-11 02:12:05 +00:00