yim
ed13140204
Fix the issue of over-scrolling in SliverMainAxisGroup with a PinnedHeaderSliver. ( #173349 )
...
Fixes : #173274
## 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].
**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-08-12 06:49:34 +00:00
Valentin Vignal
705c3d6b71
Update ExpansibleController in ExpansionTile didUpdateWidget ( #173175 )
...
Fixes https://github.com/flutter/flutter/issues/138916
## 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-08-11 15:27:56 +00:00
Ahmed Mohamed Sameh
a9be1dfab3
Make sure that a Checkbox doesn't crash in 0x0 environment ( #173178 )
...
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the Checkbox UI
control.
2025-08-08 21:08:06 +00:00
Ahmed Mohamed Sameh
2734643642
Make sure that a RawChip doesn't crash in 0x0 environment ( #173265 )
...
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the RawChip UI
control.
2025-08-08 21:06:33 +00:00
Victor Sanni
f1abbe2bf1
Fix tooltip crash when route has secondary animation ( #172678 )
...
Makes the tooltip interactive if the route is the current route and the
route is not animating out.
Added `_route` to cache `ModalRoute.of(context)`.
Consolidates [Fix the issue with
Tooltip](https://github.com/flutter/flutter/pull/168546 ) and [Delay
showing tooltip during page
transition](https://github.com/flutter/flutter/pull/167614 )
Fix [[Desktop] [Web] [Regression] [3.32] AppBar back - RenderBox was not
laid out -
TooltipState._buildTooltipOverlay](https://github.com/flutter/flutter/issues/169741 )
2025-08-08 20:56:40 +00:00
Hannah Jin
28f4e9be3b
[a11y] Textfield has flag isFocusable set to true ( #173235 )
...
split from https://github.com/flutter/flutter/pull/170935 , will remove "
..isFocusable = true" when 170935 is merged
## 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].
**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-08-08 18:47:17 +00:00
Hannah Jin
cb44b5a386
[A11y] TextField prefix icon and suffix icon create a sibling node' ( #173312 )
...
prefix/suffix icon should have their own merge group.
Noted a textfield can have suffix and suffix icon the same time so they
should be different merge group.
Co-authored-by: chunhtai <47866232+chunhtai@users.noreply.github.com>
2025-08-07 21:31:24 +00:00
Mairramer
601cde61a5
Fix ScaffoldGeometry null scale with noAnimation FAB ( #172914 )
...
Fixes #172866
When using FloatingActionButtonAnimator.noAnimation to disable FAB
animations, the ScaffoldGeometry logic that drives the BottomAppBar’s
notch and shape fails because the floatingActionButtonScale is null,
leading to a runtime error during the paint phase.
This fix ensures that when the noAnimation animator is used, the FAB
geometry is returned without applying any scale transformation, safely
bypassing the null floatingActionButtonScale and preventing the error.
## 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-08-07 20:47:41 +00:00
Luke Memet
b6e78b9305
Fix ReorderableList proxy animation for partial drag-back ( #172380 )
...
_**Note:** Alongside this PR, I've also prepared [another
PR](https://github.com/flutter/flutter/pull/172882 ) with an alternative
solution involving a more substantial refactor that addresses the root
cause, rather than adding more conditional logic._
## Description
This PR fixes the proxy animation bug where dragging a `ReorderableList`
item downward and then back to its original position causes it to
animate to the wrong location (one position too low).
## The Problem
When dragging a `ReorderableList` item downward and then back to its
original position, the proxy widget briefly animates to the wrong
location (one position too low) before snapping to the correct spot.
**Reproduction**: Drag any item down past at least one other item, then
drag it back to where it started.
<p align="center">
<img
src="https://github.com/user-attachments/assets/d0931dff-5600-441c-8536-2c61789767d0 "
alt="demo2" width="250">
</p>
## Root Cause
This bug is specific to dragging an item down and then bringing it back
up to nearly (but not 100% of the way ) to its original position:
1. When the item approaches its original position **from below**,
`_insertIndex` becomes `item.index + 1`
- This happens because Flutter's `ReorderableList` calculates
`_insertIndex` with the dragged item still present in the list (see
#24786 )
2. The proxy _should_ animate to the item's original position at
`item.index`
- _But the proxy actually animates one position too low._
- This happens because `_dragEnd` incorrectly calculates
`_finalDropPosition = _itemOffsetAt(_insertIndex! - 1) +
_extentOffset(...)`
- The `_extentOffset(...)` addition, designed for items dropping
_between other items_, shifts the position down by one item's height
- The correct calculation for "returning home from below" should be just
`_itemOffsetAt(_insertIndex! - 1)`
Note that this only occurs when returning from below (`_insertIndex >
item.index`). Dragging upward (in a vertical list for example) or
doesn't trigger this bug.
## Existing Implementation
The existing `_dragEnd` method in `reorderable_list.dart`:
```dart
void _dragEnd(_DragInfo item) {
setState(() {
if (_insertIndex == item.index) {
_finalDropPosition = _itemOffsetAt(_insertIndex!);
} else if (_reverse) {
if (_insertIndex! >= _items.length) {
_finalDropPosition =
_itemOffsetAt(_items.length - 1) - _extentOffset(item.itemExtent, _scrollDirection);
} else {
_finalDropPosition =
_itemOffsetAt(_insertIndex!) +
_extentOffset(_itemExtentAt(_insertIndex!), _scrollDirection);
}
} else {
if (_insertIndex! == 0) {
_finalDropPosition = _itemOffsetAt(0) -
_extentOffset(item.itemExtent, _scrollDirection);
} else {
_finalDropPosition = _itemOffsetAt(_insertIndex! - 1) +
_extentOffset(_itemExtentAt(_insertIndex! - 1), _scrollDirection);
}
}
});
}
```
When returning from below, the code falls through to the final else
block, which incorrectly adds `_extentOffset`.
## Fix
Detect when `_insertIndex - item.index == 1` (indicating a return to
original position from below) and animate to the correct position.
```dart
if (_insertIndex! - item.index == 1) {
// Drop at the original position when item returns from below
_finalDropPosition = _itemOffsetAt(_insertIndex! - 1);
}
```
This fix was proposed by @frankpape in
https://github.com/flutter/flutter/issues/90856#issuecomment-2599368939 ;
I've merely validated and researched the background of why the fix
works, and supported it with tests.
**_Demo of the fixed implementation:_**
<p align="center">
<img
src="https://github.com/user-attachments/assets/a53e8920-ebca-4326-abe9-3b43b34419e5 "
alt="fixed" width="250">
</p>
Fixes #88331
Fixes #90856
Fixes #150843
## A note about a previous PR:
While investigating this issue, I found a PR addressing what seemed to
be [the same exact
issue](https://github.com/flutter/flutter/issues/150843 ): PR #151026 ; it
turns out that that PR solved a _portion_ of the edge case: the case
where an item is dragged down and back and slightly **overshoots** its
original position when being dragged back & dropped—but that PR did not
account for the presence of this bug when the dragged item slightly
**undershoots** its original position on the return drag. This new PR
effectively addresses the 'undershooting' case.
With this, I've added a new pair of regression tests that are identical
to the [previous PR's
tests](https://github.com/flutter/flutter/blob/master/packages/flutter/test/widgets/reorderable_list_test.dart#L734 ),
except for the fact that they simulate an undershoot on the return trip
(90% of the way back instead of 110% like the original tests). This
definitively captures the issue, failing in the master branch and
passing in this PR's branch.
Here is the specific case resolved by the [**old**
PR](https://github.com/flutter/flutter/pull/151026 ):
<table>
<tr>
<td align="center">
<img
src="https://github.com/user-attachments/assets/b0ddc745-6e9e-4f12-97da-454e2e76b06d "
alt="Before" width="200"><br>
<sub>Before</sub>
</td>
<td align="center">
<img
src="https://github.com/user-attachments/assets/03e181fa-f43b-4405-b0c0-16d3465ad990 "
alt="After" width="200"><br>
<sub>After</sub>
</td>
</tr>
</table>
Here is the additional case resolved by **this** PR:
<table>
<tr>
<td align="center">
<img
src="https://github.com/user-attachments/assets/9b4bb591-aa2f-4cf0-88b8-a3ec32b0f0ac "
alt="Before" width="200"><br>
<sub>Before</sub>
</td>
<td align="center">
<img
src="https://github.com/user-attachments/assets/31646e9c-78f4-4252-921f-53583193868f "
alt="After" width="200"><br>
<sub>After</sub>
</td>
</tr>
</table>
Two final observations worth noting:
- The fix proposed in this PR seems to **supersede** the previous PR's
solution; it addresses both cases (overshooting and undershooting) even
in my tests with the [original PR's changes
](https://github.com/flutter/flutter/pull/151026/files#diff-23a4bb073009d89f09084bdf5f85232de135b8f11be625e6312bb85900a90e67 )
reverted. Probably best to keep the old PR's code anyway to be
conservative, but noteworthy.
- I also found it notable that neither this PR nor the older PR fix any
issue with "reversed lists", which, in my tests, are simply not subject
to this edge case as we've defined it. The regression tests added for
the reverse case are thus purely precautionary.
## 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
2025-08-07 19:30:24 +00:00
Kostia Sokolovskyi
1280fad73f
Fix drawerScrimColor transition. ( #173280 )
...
Fixes https://github.com/flutter/flutter/issues/173112
### Description
- Fixes `drawerScrimColor` transition issue caused by
`Colors.transparent` usage in color interpolation
| BEFORE | AFTER |
| - | - |
| <video alt="before"
src="https://github.com/user-attachments/assets/67d4295e-667e-4f73-b5e0-7841d29f8f57 "
/> | <video alt="after"
src="https://github.com/user-attachments/assets/0f3cacc1-55bd-4c00-8ebe-a5d06ebb7663 "
/> |
## 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-08-07 06:50:40 +00:00
Tong Mu
de3dedaa74
Add radius clamping to web RSuperellipse ( #172254 )
...
This PR fixes rendering errors on Web when the provided corner radii sum
up larger than the size. It implements radius scaling using the same
algorithm as in [the C++
implementation](b2d4210b37/engine/src/flutter/impeller/geometry/rounding_radii.cc ).
Before: (error emerges for r>100, since the height is 200)
<img width="664" height="509" alt="image"
src="https://github.com/user-attachments/assets/eb526338-84d9-4eca-975b-d44bee0c11ac "
/>
After: (it stays this way for r>100)
<img width="611" height="471" alt="image"
src="https://github.com/user-attachments/assets/08ca2499-d5f7-47e1-9ecf-29f60c968016 "
/>
It also fixes a bug that uses an incorrect starting point.
Both changes are backed by the new test cases in
`rounded_superellipse_border_test.dart`.
## 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-08-05 23:53:14 +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
Kostia Sokolovskyi
dd790ea5da
Fix Slider dragged mouse cursor visibility. ( #172759 )
...
Fixes https://github.com/flutter/flutter/issues/172752
### Description
- Fixes dragged cursor visibility in `Slider`
- Replaces `MaterialState` occurrences with `WidgetState`
| Before | After |
| - | - |
| <video
src="https://github.com/user-attachments/assets/bb6c1e9e-fdec-456d-bf29-070ad2cbb47d "
/> | <video
src="https://github.com/user-attachments/assets/8ae76bc2-bb6c-4439-9321-6ec925db7c31 "
/> |
## 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-08-05 06:58:19 +00:00
Ahmed Mohamed Sameh
c8ec3058fa
Make sure that an AboutListTile doesn't crash in 0x0 environment ( #172421 )
...
This is my attempt to handle #6537 for the AboutListTile UI control.
2025-08-05 06:52:55 +00:00
Loïc Sharma
384331e171
Migrate to list and builder Sliver convenience constructors ( #173011 )
...
In 2022, we introduced new convenience constructors like
`SliverList.builder` and `SliverList.list`. Unfortunately, LLMs like
Gemini seem to prefer the delegate pattern even when these convenience
constructors are usable. This updates Flutter's docs, code, and tests to
use these convenience constructors where possible. Hopefully this will
nudge LLMs to consider using the new APIs :)
I migrated 80% of the code by hand, and 20% using Gemini CLI. See
[go/loic-ai-log](http://goto.google.com/loic-ai-log ) (Google internal)
for details.
There's a few locations that I wasn't able to migrate to the convenience
constructors due to missing APIs. I filed the following issues:
1. https://github.com/flutter/flutter/issues/173018
2. https://github.com/flutter/flutter/issues/173019
## 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.
- [ ] 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-08-04 22:32:22 +00:00
Matthew Kosarek
69264e4a60
Add the 'windowing' feature flag and use to wrap an implementation for regular windows that always throws ( #172478 )
...
## What's new?
- Added the `windowing` feature flag to the project
- Created the internal `_window.dart` API with support for regular
windows
- Implemented a `_WindowingOwnerUnsupported` implementation of the
`WindowingOwner` interface
- Marked all points of the public API as `@internal` with a
corresponding warning documentation
- Threw an `UnsupportedError` where it is appropriate to do so
Note that this PR does **NOT** include a real implementation of
`WindowingOwner` (e.g. for win32 or macOS). That work will be opened as
a follow up.
This work is based off of https://github.com/flutter/flutter/pull/168697
and http://github.com/flutter/flutter/pull/168437 , as well as this
design document:
https://docs.flutter.dev/go/multi-window-experimental-apis
## Pre-launch Checklist
- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [x] I followed the [breaking change policy] and added [Data Driven
Fixes] where supported.
- [x] All existing and new tests are passing.
---------
Co-authored-by: Loïc Sharma <737941+loic-sharma@users.noreply.github.com>
2025-08-04 17:54:53 +00:00
Ahmed Mohamed Sameh
a5a407032b
Make sure that a LicensePage doesn't crash in 0x0 environment ( #172610 )
...
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the LicensePage UI
control.
2025-08-04 16:28:20 +00:00
Valentin Vignal
e5fd5b6be5
Add innerRadius to RadioThemeData ( #173120 )
...
Part of https://github.com/flutter/flutter/issues/168787
## 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-08-02 16:20:06 +00:00
Loïc Sharma
af88a4f76d
Reformat text.dart's code snippets ( #172976 )
...
## 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-08-01 21:52:07 +00:00
Ahmed Mohamed Sameh
74e455ae3a
Make sure that a RawAutocomplete doesn't crash in 0x0 environment ( #172812 )
...
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the RawAutocomplete
UI control.
2025-08-01 20:25:13 +00:00
Yash Dhrangdhariya
5483fef538
fix: 🐛 Add equality and hashCode implementations to ResizeImage ( #172643 )
...
This PR adds implementations for `==` and `hashCode` in the
`ResizeImage` class.
#### Reason
Previously, `ResizeImage` instances with identical configuration (e.g.,
same width, height, image provider, and allowUpscaling flag) were not
treated as equal. As a result, comparing two such instances would always
return false, even when they have the same values.
#### Fixes
Closes #172642
## 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-08-01 18:58:32 +00:00
Valentin Vignal
ce44f81c86
Add side to RadioThemeData ( #171945 )
...
Part of https://github.com/flutter/flutter/issues/168787
## 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-08-01 16:35:57 +00:00
Hannah Jin
2b07a4a1a0
[A11y] RangeSlider should have 2 focus node ( #172729 )
...
internal: b/430179234 : in a11y mode, you can't use tab to focus on the
handles of the rangeslider, only use a11y shortcut to focus on them.
rangeSlider is a widget with 1 renderObject but 2 semanticsNode because
it has 2 inputs, each handle of the rangeSlider has its own actions. To
achieve that, rangeSlider creates its semantics node using the
assembleSemantics function.
For the same reason, rangeSlider should have 2 focus nodes instead of 1,
and it should be linked to semantics to support tab to navigate in a11y
mode.
This PR is to add 2 focus nodes to the range slider, link them to a11y
and also highlight the thumb when focused.
## 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-08-01 01:50:35 +00:00
yim
712db023aa
Fix the issue where calling showOnScreen on a sliver after a pinned child in SliverMainAxisGroup does not reveal it. ( #171339 )
...
Fixes : #154615
## 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-07-31 19:50:09 +00:00
Alex Talebi
4b74066394
Improve assertion message in EdgeInsetsDirectional.resolve ( #172099 )
...
Replaces the generic assertion in `EdgeInsetsDirectional.resolve` with
`debugCheckCanResolveTextDirection`.
This change provides a more helpful and descriptive error message when
the `TextDirection` is null, improving the developer
experience by clearly stating why the resolution failed and how to fix
it.
Fixes : #171816 , Fixes : #171817 , also fixes #171812
## 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
2025-07-31 19:42:07 +00:00
Loïc Sharma
443f6760b1
Add a SliverList code sample ( #172986 )
...
This adds a code sample to `SliverList`. It shows off the
`SliverList.builder` convenience constructor. Hopefully this will guide
LLMs to using this instead of manually creating a delegate.
## 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
2025-07-31 16:14:07 +00:00
Zuckjet
28b09850d0
fix: adjust scrollable size assertion with tolerance ( #171426 )
...
<!--
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/136331
The original issue highlights two separate bugs:
1. When Flutter calculates Widgets, there might be floating-point
precision issues. For example, the calculation result may show
_dragTargetRelatedToScrollOrigin.size.height as 64.00000000000003.
Therefore, I introduced a very small tolerance to address this.
2. When there's a size scaling effect on the ReorderableListView, such
as an influence from Transform.scale, the method for calculating the
drag target becomes incorrect.
## 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.
2025-07-31 16:06:07 +00:00
Alex Talebi
e89c29a642
feat: Add cursorHeight to DropdownMenu ( #172615 )
...
This change adds the `cursorHeight` property to `DropdownMenu`, allowing
developers to customize the cursor height in the text field within the
dropdown.
The `cursorHeight` property is passed down to the underlying `TextField`
widget.
<!--
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 #172425
## 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: Qun Cheng <36861262+QuncCccccc@users.noreply.github.com>
2025-07-31 03:37:18 +00:00
Ben Konyi
b58151f885
[ Widget Previews ] Add support for MultiPreviews ( #172852 )
...
`MultiPreview` is an abstract class that allows for developers to create
custom preview annotations that can be used to easily create multiple
previews from a single annotation.
Fixes https://github.com/flutter/flutter/issues/166447
2025-07-30 20:31:25 +00:00
Ricardo Dalarme
56d5389456
Migrate to null aware elements - Part 5 ( #172418 )
...
## Description
Continuing the work from @jamilsaadeh97 to replace verbose null checks
with modern
[null_aware_elements](https://dart.dev/tools/linter-rules/use_null_aware_elements )
syntax.
This PR cleans up the remaining files not covered in the previous parts,
making the code more concise.
## Related PRs
- https://github.com/flutter/flutter/pull/172198
- https://github.com/flutter/flutter/pull/172306
- https://github.com/flutter/flutter/pull/172307
- https://github.com/flutter/flutter/pull/172322
## 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-07-30 18:40:09 +00:00
Dara Adedeji
83c7108c99
docs: Clarify Transform.rotate origin interaction with alignment ( #163934 )
...
<!--
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 commit improves the documentation for Transform.rotate's origin
property to clarify its interaction with the alignment property.
Before: The documentation did not clearly explain how the origin offset
interacts with the alignment property, potentially leading to confusion
about the actual rotation point.
After: The documentation now emphasizes that the origin offset is
applied after the alignment transformation, and provides examples to
avoid common misinterpretations.
This change ensures developers can correctly position the rotation
point.
---------
Co-authored-by: Greg Price <gnprice@gmail.com>
2025-07-30 18:35:59 +00:00
Siva
5143f4333c
Reland - Manual roll of Dart from 5ede85aff798 to 14ea8d342149 ( #172947 )
...
https://dart.googlesource.com/sdk.git/+log/5ede85aff798..14ea8d342149
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-36.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-35.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-34.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-33.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-32.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-31.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-30.0.dev
https://dart.googlesource.com/sdk.git/+/refs/tags/3.10.0-29.0.dev
2025-07-30 16:37:17 +00:00
Bruno Leroux
c825031ba2
Fix SegmentedButton border doesn't reflect states ( #172754 )
...
## Description
This PR fixes `SegmentedButton` border side not depending on the current
state.
It's based on one @TahaTesser 's great PR: see
https://github.com/flutter/flutter/pull/161942 . 🙏
I updated some logic related to disabled border which led to Taha’s PR
failing internal Google tests.
I also added a test to verify the disabled border.
<details><summary>Code sample for screenshots</summary>
```dart
import 'package:flutter/material.dart';
void main() {
runApp(const SegmentedButtonApp());
}
enum Calendar { day, week, month, year }
class SegmentedButtonApp extends StatefulWidget {
const SegmentedButtonApp({super.key});
@override
State<SegmentedButtonApp> createState() => _SegmentedButtonAppState();
}
class _SegmentedButtonAppState extends State<SegmentedButtonApp> {
Calendar? calendarView;
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData(
segmentedButtonTheme: SegmentedButtonThemeData(
style: ButtonStyle(
side: WidgetStateProperty.fromMap(<WidgetStatesConstraint, BorderSide?>{
WidgetState.disabled: const BorderSide(color: Colors.grey, width: 2),
WidgetState.selected & WidgetState.hovered: const BorderSide(
color: Colors.blue,
width: 2,
),
WidgetState.selected & WidgetState.focused: const BorderSide(
color: Colors.pinkAccent,
width: 2,
),
WidgetState.hovered: const BorderSide(color: Colors.green, width: 2),
WidgetState.focused: const BorderSide(color: Colors.purple, width: 2),
WidgetState.any: const BorderSide(color: Colors.amber, width: 2),
}),
),
),
),
home: Scaffold(
body: Center(
child: SegmentedButton<Calendar>(
segments: const <ButtonSegment<Calendar>>[
ButtonSegment<Calendar>(
value: Calendar.day,
label: Text('Day'),
icon: Icon(Icons.calendar_view_day),
enabled: false,
),
ButtonSegment<Calendar>(
value: Calendar.week,
label: Text('Week'),
icon: Icon(Icons.calendar_view_week),
),
ButtonSegment<Calendar>(
value: Calendar.month,
label: Text('Month'),
icon: Icon(Icons.calendar_view_month),
),
ButtonSegment<Calendar>(
value: Calendar.year,
label: Text('Year'),
icon: Icon(Icons.calendar_today),
),
],
selected: <Calendar>{?calendarView},
emptySelectionAllowed: true,
onSelectionChanged: (Set<Calendar> newSelection) {
setState(() {
calendarView = newSelection.isEmpty ? null : newSelection.first;
});
},
),
),
floatingActionButton: FloatingActionButton(onPressed: () {}, child: const Icon(Icons.add)),
),
);
}
}
```
</details>
# Before
https://github.com/user-attachments/assets/1581f431-f87a-4af3-8ef6-f1f0d170e54a
# After
https://github.com/user-attachments/assets/156a8a64-3d9f-4323-9a1d-60624f5ac5d4
## Related Issue
Fixes [SegmentedButton does not set its MaterialState for side
](https://github.com/flutter/flutter/issues/159884 )
## Tests
Adds 2 tests.
2025-07-29 23:53:22 +00:00
Alex Talebi
a5934ee348
fix(scrollbar): Update padding type to EdgeInsetsGeometry ( #172056 )
...
<!--
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 enhances RTL support for the RawScrollbar widget by updating its
padding type and adding comprehensive tests.
The changes include:
1. Updating RawScrollbar's `padding` parameter from `EdgeInsets` to
`EdgeInsetsGeometry`
- This change is non-breaking because `EdgeInsets` is a subclass of
`EdgeInsetsGeometry`
- Existing code using `EdgeInsets` will continue to work as before
- Users can now optionally use `EdgeInsetsDirectional` for RTL support
2. Adding a test case that verifies scrollbar positioning with
EdgeInsetsDirectional padding
3. Testing both overscroll and regular scroll scenarios with directional
padding
These changes ensure that the scrollbar works correctly in both LTR and
RTL layouts, improving accessibility and internationalization support.
Fixes : #167922
## Pre-launch Checklist
- [x] I read the [Contributor
Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md#overview )
and followed the process outlined there for submitting PRs.
- [x] I read the [Tree
Hygiene](https://github.com/flutter/flutter/blob/main/docs/contributing/Tree-hygiene.md )
wiki page, which explains my responsibilities.
- [x] I read and followed the [Flutter Style
Guide](https://github.com/flutter/flutter/blob/main/docs/contributing/Style-guide-for-Flutter-repo.md ),
including [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 ).
- [x] I signed the [CLA](https://cla.developers.google.com/ ).
- [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.
- [x] All existing and new tests are passing.
If you need help, consider asking for advice on the #hackers-new channel
on
[Discord](https://github.com/flutter/flutter/blob/main/docs/contributing/Chat.md ).
<!-- 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-07-29 20:51:22 +00:00
René Kilczan
cfbaa18bde
Remove shortner ( #172844 )
...
Replacing shortner urls with the long versions. Fixes #172843
## 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].
<!-- 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-07-28 15:07:11 +00:00
Alex Talebi
9f90740c26
Improve assertion message in _MixedBorderRadius.resolve() ( #172100 )
...
Replaces the generic assertion in `_MixedBorderRadius.resolve` with
`debugCheckCanResolveTextDirection`.
This change provides a more helpful and descriptive error message when
the `TextDirection` is null, improving the developer experience by
clearly stating why the resolution failed and how to fix it.
Fixes : #171815 , also fixes : #171812
## 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
2025-07-24 21:16:11 +00:00
Ahmed Mohamed Sameh
4ba3886db2
Make sure that a BottomAppBar doesn't crash in 0x0 environment ( #172097 )
...
This is my attempt to handle #6537 for the BottomAppBar UI control.
2025-07-24 21:01:07 +00:00
Ahmed Mohamed Sameh
bcc0c47b47
Handle#6537 bottom navigation bar ( #172404 )
...
This is my attempt to handle #6537 for the BottomNavigationBar UI
control.
---------
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-07-24 21:01:07 +00:00
Ahmed Mohamed Sameh
c2106147e2
Make sure that a MaterialBanner doesn't crash in 0x0 environment ( #172074 )
...
This is my attempt to handle #6537 for the MaterialBanner UI control.
2025-07-24 21:01:06 +00:00
Ahmed Mohamed Sameh
4778560783
Make sure that a Card doesn't crash in 0x0 environment ( #172373 )
...
This is my attempt to handle #6537 for the Card UI control.
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-07-24 20:41:03 +00:00
Ahmed Mohamed Sameh
485a2cd735
Make sure that an AboutDialog doesn't crash in 0x0 environment ( #172444 )
...
This is my attempt to handle #6537 for the AboutDialog UI control.
2025-07-24 20:39:51 +00:00
Ahmed Mohamed Sameh
b9477bdee0
Make sure that an ActionChip doesn't crash in 0x0 environment ( #172684 )
...
This is my attempt to handle
https://github.com/flutter/flutter/issues/6537 for the ActionChip UI
control.
2025-07-24 20:39:51 +00:00
Kostia Sokolovskyi
79d77a1387
Add missing deprecations to CupertinoDynamicColor. ( #171160 )
...
Closes https://github.com/flutter/flutter/issues/171059
### Description
- Adds missing deprecations to `CupertinoDynamicColor`
- Adds dart fixes for some of the deprecations
## 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
---------
Co-authored-by: Kate Lovett <katelovett@google.com>
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-07-24 08:24:27 +00:00
Arindam Karmakar
2fbe9398bd
Add automaticallyImplyActions property to AppBar ( #171113 )
...
## Summary
- This PR adds a new boolean property `automaticallyImplyActions` to the
`AppBar` widget.
- It provides fine-grained control over whether an automatic menu icon
(`Icons.menu`) is added when an `endDrawer` is present and `actions` are
null or empty.
## Details
### Background
In the current behavior of `AppBar`, if:
- The `Scaffold` has a non-null `endDrawer`, and
- The `AppBar.actions` is either `null` or an empty list `[]`
Then Flutter **automatically inserts** a trailing menu icon
(`Icons.menu`) into the `actions` list, which opens the `endDrawer`.
### New Behavior
This PR introduces:
```dart
final bool automaticallyImplyActions; // default: true
```
Developers can now control this behavior:
- `automaticallyImplyActions: true` (default):\
The menu icon is automatically inserted when appropriate, as before.
- `automaticallyImplyActions: false`:\
The `AppBar` will **not** add the automatic trailing menu icon, even if
an `endDrawer` is present and `actions` are null or empty.
### All Possible Scenarios
| `endDrawer` | `actions` | `automaticallyImplyActions` | Result |
| ----------- | ----------------- | --------------------------- |
----------------------------------- |
| ✅ present | `null` or `[]` | `true` (default) | Automatic menu icon is
added |
| ✅ present | `null` or `[]` | `false` | No menu icon is added |
| ✅ present | `[customWidgets]` | `true` / `false` | Custom actions
shown, no menu added |
| ❌ absent | any value | any value | No menu icon is added |
This provides predictable, developer-controlled behavior while
maintaining backward compatibility.
---
## Use Case
This change benefits developers who:
- Want to **prevent automatic UI behaviors** when building custom app
bars.
- Need full control over the trailing icons without modifying internal
logic.
- Encounter issues where the menu icon appears unintentionally in
minimal `AppBar` configurations.
---
## Default Behavior (No Breaking Change)
- The default value is `true`, so existing applications are **not
affected**.
- The new behavior is **opt-in** by setting `automaticallyImplyActions:
false`.
---
## 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.
<!-- 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-07-24 00:02:06 +00:00
Koji Wakamiya
49c300a999
fix: TabBar fontFamily inheritance with custom label styles ( #171699 )
...
fix #127787
When `labelStyle` or `unselectedLabelStyle` is specified, the
`defaults.labelStyle` is ignored.
Merge `defaults` to make `labelStyle` and `TabBarTheme.labelStyle` apply
default text styles.
## 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: Mitchell Goodwin <58190796+MitchellGoodwin@users.noreply.github.com>
2025-07-24 00:02:06 +00:00
Pedro Massango
5d00045ad2
Fix: Ensure Text widget locale is included in semantics language tag ( #172034 )
...
Fixes https://github.com/flutter/flutter/issues/162324
## 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.
- [ ] All existing and new tests are passing.
2025-07-23 23:56:48 +00:00
Hannah Jin
2b72e9cf34
[Web][a11y] Update selected chips semantics ( #172660 )
...
internal: b/430166300
## 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-07-23 23:56:47 +00:00
Alex Talebi
c45a67e4ac
Improve assertion message in AlignmentDirectional.resolve ( #172096 )
...
Replaces the generic assertion in `AlignmentDirectional.resolve` and
`_MixedAlignment.resolve` with
`debugCheckCanResolveTextDirection`.
This change provides a more helpful and descriptive error message when
the `TextDirection` is null, improving the developer experience by
clearly stating why the resolution failed and how to fix it.
Fixes : #171813 , Fixes : #171814 , also fixes : #171812
## 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
2025-07-22 22:11:01 +00:00
Michael Goderbauer
6b7d92852c
Bump meta to 0.17.0 ( #172541 )
...
Unclear why the bot didn't bump this.
2025-07-22 17:51:20 +00:00
Huy
db38e71bfc
Fix PopupMenuButton crashes when being hidden immediately ( #171970 )
...
- Fix https://github.com/flutter/flutter/issues/171422 (and maybe also
https://github.com/flutter/flutter/issues/167180 , and
https://github.com/flutter/flutter/issues/163477 )
- Investigation: Per discussion in
https://github.com/flutter/flutter/issues/171422 , the issue is probably
happening due to accessing inherited widgets via `context` in
`positionBuilder`(like `PopupMenuTheme`) when PopupMenu's State is
inactive. This PR proposed a fix by caching the necessary objects in
`didChangeDependencies` method. Some of `RenderBox` are also cached to
avoid another exception like _Cannot get renderObject of inactive
element._.This solution can also be seen at another widget like
`CalendarDatePicker`:
d6b2a95215/packages/flutter/lib/src/material/calendar_date_picker.dart (L225-L232)
<details open>
<summary>Demo</summary>
| before | after |
| --------------- | --------------- |
<video
src="https://github.com/user-attachments/assets/2af0a4cb-216c-4033-bdd6-d288338bdf6b "/>
| <video
src="https://github.com/user-attachments/assets/c3e46f9c-9ead-4060-9df7-208bee7be740 "/>
</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
Signed-off-by: huycozy <huy@nevercode.io>
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
2025-07-22 03:16:48 +00:00