Refresh Indicator Elevation:
- Added elevation to the refresh indicator using elevation attribute.
- This change improves the indicator's visibility against various background colors and enhances overall UI consistency.
- If we want to get rid of shadow effect from the indicator itself.
The refresh indicator did not provide the control over depth of the progress indicator. This change addresses that issue by adding elevation to the indicator, creating a subtle depth effect that makes it more visually prominent and provides better feedback to the user.
No breaking changes.
| Before | After |
| --- | --- |
|  |  |
Pre-launch Checklist
Fixes a bug where the app would exit on a back gesture when there were still routes in the navigation stack after returning to the app from a notification.
fixes https://github.com/flutter/flutter/issues/120083
Description
This PR addresses the following issues:
- Resolves the unexpected scrolledUnderElevation trigger that occurs when scrolling within the Drawer and NavigationDrawer.
So, uhm, 2 years ago in https://github.com/flutter/flutter/pull/116429 we introduced this concept of a lookup boundary to hide certain InheritedWidgets in widget subtrees who belong to a different render tree than the InheritedWidget itself. This is for example needed for the Material widget: Buttons reach out to their Material ancestor to draw ink splashes on its associated render object. This only produces the desired effect if the button render object is a descendant of the Material render object (the two need to be in the same render tree). Overlay widgets have a similar problem.
Lookup boundaries were specifically designed for multi view support, where a sub view would be powered by a separate and independent render tree. Ergo, widgets in the sub view shouldn't see these InheritedWidgets if they are part of the parent view. After all, it would be strange if clicking on a button in a subview draws the ink splash effect into the parent view. Unfortunately, we (and by that I really mean I) forgot to put a LayoutBoundary into the relevant multi view widgets when those were introduced in https://github.com/flutter/flutter/pull/125003. This PR addresses that by wrapping the `ViewAnchor.view` child in a LookupBoundary so that its subtree (which bootstraps a separate render tree) cannot see these InheritedWidgets in the parent view.
`DartDevelopmentServiceLauncher` was created to share the DDS launch
logic from flutter_tools with other Dart tooling.
---------
Co-authored-by: Andrew Kolos <andrewrkolos@gmail.com>
Catches gradle error and throws a helpful error message that indicates
an incompatability between Java and AGP versions and how to fix the
issue.
Related issue:
[128524](https://github.com/flutter/flutter/issues/128524)
## 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.
- [ ] All existing and new tests are passing.
Native libraries that are contributed by native asset builders can depend on each other. For macOS and iOS, native libraries are repackaged into Frameworks, which renders install names that have been written into dependent libraries invalid.
With this change, a mapping between old and new install names is maintained, and install names in dependent libraries are rewritten as a final step.
Related to https://github.com/dart-lang/native/issues/190
This regression is due to the fact that `animationController.isAnimating` and `animationController.status.isAnimating` sometimes return opposite values.
This PR implements & tests the bugfix, and also adds documentation to explain this behavior.
<br>
fixes https://github.com/flutter/flutter/issues/153851
cc @azeunkn0wn @huycozy
Iâve added a comment document for the `fontFamily` property of `IconData`. The purpose of this is to provide developers with a hint when importing a custom icon. It only includes the change made in the comment.
The original issue was:
[154144](https://github.com/flutter/flutter/issues/154144)
It was marked as closed so I created a new issues for proposal:
Fixes#154149
*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*
When you change the `initialValue` of a `TextFormField`, it will not trigger a widget rebuild, which is the intended behavior. This PR is meant to clarify that. https://github.com/flutter/flutter/issues/152816
This is a follow up on https://github.com/flutter/flutter/pull/152526
1. Make changes with an additional parameter ( bool internalAddSemanticForOnTap = false) (https://github.com/flutter/flutter/pull/152526 )
2. Send regular CLs in google3 to pass internalAddSemanticForOnTap: true, and update the tests / text goldens 3. accordingly. g3 fix sent: cl/661353802
3. Send a PR to flip the default value to true. (This PR)
4. Send CLs internally to remove internalAddSemanticForOnTap: true.
5. Send another PR to remove the now-redundant internalAddSemanticForOnTap flag.
(<----This PR is step 3)
Make sure `usesUnsupportedDependencyVersions` property exists before checking it in the Flutter Gradle plugin.
Related to: https://github.com/flutter/flutter/issues/153668 (doesn't fix, will need to cherry pick to fix).
The choice screen is irrelevant when debugging apps locally. `flutter run` creates a separate user profile for testing only. It doesn't touch users' browser settings.
Fixes https://github.com/flutter/flutter/issues/153928
Fixes https://github.com/flutter/flutter/issues/153972 (unless the cause of https://github.com/flutter/flutter/issues/153064#issuecomment-2305662791 happens to also prevent this fix from working).
In this PR, I've looked for all non-test call sites of `ChromeConnection.getTabs` and made sure are all wrapped in `try` blocks that handle `IOException` (`HttpException` is what we see in crash reporting, but I figure any `IOException` might as well be the same for all intents and purposes).
I plan on cherry-picking this the stable branch.
PR #147863 used a `LayoutBuilder` to ensure `ReorderableList` proxy items are built with the same constraints as their normal counterparts. However we don't actually need the `LayoutBuilder`, we can just grab the constraints from the `RenderBox` at proxy-creation-time.
Currently, if creating a symlink on Windows fails due to `ERROR_ACCESS_DENIED`, you'll get an error message like:
```
Error: ERROR_ACCESS_DENIED file system exception thrown while trying to create a symlink from source to dest
```
The `source` and `dest` paths are incorrect.
This will help us debug: https://github.com/flutter/flutter/issues/153758
Reverts: flutter/flutter#150355
Initiated by: chingjun
Reason for reverting: this is breaking an internal test.
Original PR Author: Chuckame
Reviewed By: {victorsanni, MitchellGoodwin}
This change reverts the following previous change:
- Closes#63973
- Now able to provide a `selectableDayPredicate`
- No breaking change (same behavior as before if not set)
- Reuse the same feature as the DatePicker: non-selectable days are greyed and not clickable
- Reuse the same error message as if the user set a wrong date range
- Made public `CalendarDateRangePicker`, actually the same for `CalendarDatePicker`, to allow using the range picker outside the `showDateRangePicker` bottom sheet modal
## Examples
- Disable days after the next non selectable day when start day has been selected
https://github.com/flutter/flutter/assets/16419143/2a2be325-1e2f-470c-8b17-b4ed5b2ad43e
- Select a range including non-selectable days
<img width="363" alt="image" src="https://github.com/flutter/flutter/assets/16419143/21e32def-46f0-41d6-974f-281a0405e28e">
- Closes#63973
- Now able to provide a `selectableDayPredicate`
- No breaking change (same behavior as before if not set)
- Reuse the same feature as the DatePicker: non-selectable days are greyed and not clickable
- Reuse the same error message as if the user set a wrong date range
- Made public `CalendarDateRangePicker`, actually the same for `CalendarDatePicker`, to allow using the range picker outside the `showDateRangePicker` bottom sheet modal
## Examples
- Disable days after the next non selectable day when start day has been selected
https://github.com/flutter/flutter/assets/16419143/2a2be325-1e2f-470c-8b17-b4ed5b2ad43e
- Select a range including non-selectable days
<img width="363" alt="image" src="https://github.com/flutter/flutter/assets/16419143/21e32def-46f0-41d6-974f-281a0405e28e">
As of Xcode 16, App Store validation now requires that apps uploaded to the App store bundle dSYM debug information bundles for each Framework they embed.
dSYM bundles are packaged in the FlutterMacOS.xcframework shipped in the `darwin-x64-release` tools archive as of engine patches:
* https://github.com/flutter/engine/pull/54696
This copies the FlutterMacOS.framework.dSYM bundle from the tools cache to the build outputs produced by `flutter build macOS`.
Fixes: https://github.com/flutter/flutter/issues/153879
This PR adds a new constructor to the RefreshIndicator's class, which is `noSpinner`.
The purpose of this new constructor is to create a RefreshIndicator that doesn't show a spinner when the user arms it by pulling.
The work is based on a partial that is here: https://github.com/flutter/flutter/pull/133507
I addressed the following issues reported in the PR above:
- in the example for `noSpinner`, arming the RefreshIndicator now shows a CircularProgressIndicator, instead of just printing text to the console;
- added a test for the new example;
- added a doc comment on the new constructor;
Fixes https://github.com/flutter/flutter/issues/132775