-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Allow the Slider to always show the value indicator. #162223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for another PR @yiiim!
FYI @TahaTesser who is verry familiar with sliders. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR does a fair bit of refactoring to add OverlayPortal, this makes sliders more complex.
We had previous show value indicator behaviors without OverlayPortal. Please provide more details on OverlayPortal addition and benefits.
Now, when And when we change |
bb3d73d to
da97b9b
Compare
TahaTesser
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! Just some initial thoughts.
|
|
||
| OverlayEntry? overlayEntry; | ||
| Widget _buildValueIndicator(ShowValueIndicator? showValueIndicator) { | ||
| late final Widget valueIndicator = CompositedTransformFollower( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| late final Widget valueIndicator = CompositedTransformFollower( | |
| late final Widget valueIndicator = CompositedTransformFollower( |
Is late required since the value is assigned here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If valueIndicator is never accessed, the assignment expression for valueIndicator will not be executed. It is not necessarily required to create it in the subsequent code.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
the late isn't required to execute this code.
| link: _layerLink, | ||
| child: _ValueIndicatorRenderObjectWidget(state: this), | ||
| ); | ||
| late final Widget valueIndicatorWhenDragged = ValueListenableBuilder<bool>( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
similarly, late is used but value is also assigned here.
| void hideValueIndicator() { | ||
| assert(mounted); | ||
| _showValueIndicatorForDragged.value = false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just making sure. Once the portal controller is created and assigned to shown, are we disposing it when value indicator is hidden? Considering a screen might have a bunch sliders and each of one of them might create a portal controller without being disposed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you mean OverlayPortalController? OverlayPortalController does not need to dispose.
The OverlayChild will always be displayed. When ShowValueIndicator is set to be shown during dragging, _showValueIndicatorForDragged controls whether _ValueIndicatorRenderObjectWidget is mounted to the tree within the OverlayChild.
|
FYI @LongCatIsLooong on the overlay portal implementation. I was told you're working on something that would help Slider. |
Here is the PR #163575 |
| late final OverlayPortalController _valueIndicatorOverlayPortalController = | ||
| OverlayPortalController()..show(); | ||
| // Control whether the value indicator is visible only when it needs to be shown during dragging. | ||
| late final ValueNotifier<bool> _showValueIndicatorForDragged = ValueNotifier<bool>(false); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I'm not familiar with the implementation, but adding the new state variable would probably make the implementation more complicated than checking if the animation status is .dismissed?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's awesome! I completely overlooked that. It cleaned up a lot of code.
LongCatIsLooong
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think I looked into doing that before, the slider theming API could have been much cleaner if we could use inherited widgets, so thanks for converting the implementation to using OverlayPortal! The OverlayPortal change LGTM.
TahaTesser
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with some nits
| @Deprecated( | ||
| 'Use ShowValueIndicator.onDrag. ' | ||
| 'This feature was deprecated after v3.28.0-1.0.pre.', | ||
| ) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you plan to write a dart fix for this deprecation? It'd be best to deprecate this property in a separate PR with dart fix.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I will write this in a separate PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The dart fix should be included in this PR, not a separate change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If the property is deprecated in this PR then dart fix should be included.
Perhaps, I wasn't clear. I suggested to mark it as deprecated and include dart fix in a separate PR so the dart fix can be included with the deprecation.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dart fix is included in this PR.
|
@yiiim Could you please also update #162223 (comment) with new API changes. |
|
@Piinks Can you help find out the reason why the Google test failed? |
TahaTesser
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just realised I approved it without making sure deprecation mark was reverted after @Piinks comment.
Please include dart fix in this PR if you plan to keep deprecation mark.
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@yiiim it looks like the Google testing shows the on tap functionality is broken by this change. When the slider is tapped on, it shows the value indicator in response. Can you take a look?
| constant: 'onDrag' | ||
| inEnum: 'ShowValueIndicator' | ||
|
|
||
| # Before adding a new fix: read instructions at the top of this file. No newline at end of file |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nit: missing a newline here.
| @@ -0,0 +1,35 @@ | |||
| # Copyright 2014 The Flutter Authors. All rights reserved. | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am not sure we need a new file just for one fix, can we just add this to the fixes in fix_material.yaml?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Dart fixes also need to be tested. Can you please add tests under the test_fixes directory? They demonstrate the code before and after the tool applies the migration.
b6b9699 to
0fd3f15
Compare
Could you provide more information? I am unable to reproduce this. |
Thanks for your patience! Here is a recreation of the code from the broken test. import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
),
home: RangeSlidersDemo(),
);
}
}
class RangeSlidersDemo extends StatefulWidget {
static const slug = 'range-slider';
@override
State<StatefulWidget> createState() => _RangeSlidersDemoState();
}
class _RangeSlidersDemoState extends State<RangeSlidersDemo> {
RangeValues _continuousValues = const RangeValues(42, 49);
RangeValues _discreteValues = const RangeValues(20, 40);
@override
Widget build(BuildContext context) {
return Scaffold(
body: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Column(
children: [
RangeSlider(
labels: RangeLabels(
_continuousValues.start.round().toString(),
_continuousValues.end.round().toString(),
),
values: _continuousValues,
min: 0,
max: 100,
onChanged: (RangeValues values) {
setState(() {
_continuousValues = values;
});
},
),
Text('Continuous Enabled'),
],
),
SliderTheme(
data: SliderTheme.of(context).copyWith(
showValueIndicator: ShowValueIndicator.onlyForContinuous,
),
child: Column(
children: [
RangeSlider(
// Key is for scuba testing only.
key: Key('continuousRangeSlider'),
labels: RangeLabels(
_continuousValues.start.round().toString(),
_continuousValues.end.round().toString(),
),
values: _continuousValues,
min: 0,
max: 100,
onChanged: (RangeValues values) {
setState(() {
_continuousValues = values;
});
},
),
Text('Continuous Enabled Value Indicator'),
],
),
),
SliderTheme(
data: SliderTheme.of(context).copyWith(
showValueIndicator: ShowValueIndicator.onlyForDiscrete,
),
child: Column(
children: [
RangeSlider(
key: Key('discreteSlider'),
labels: RangeLabels(
_discreteValues.start.round().toString(),
_discreteValues.end.round().toString(),
),
min: 0,
max: 100,
values: _discreteValues,
divisions: 5,
onChanged: (RangeValues values) {
setState(() {
_discreteValues = values;
});
},
),
Text('Discrete Enabled Value Indicator'),
],
),
),
Column(
children: [
RangeSlider(
values: _continuousValues,
min: 0,
max: 100,
onChanged: null,
),
Text('Continuous Disabled'),
],
),
Column(
children: [
RangeSlider(
divisions: 5,
min: 0,
max: 100,
values: _discreteValues,
onChanged: null,
),
Text('Discrete Disabled'),
],
),
],
),
),
);
}
}This issue is on the middle one with two values showing. This image does not reflect my cursor tapping on it, which briefly reveals the indicators on both sides. |
|
The Google testing issue has been resolved because the problem only occurred within the same frame during press and release gestures. Therefore, it was not discovered during the run. Many thanks to @Piinks for taking the time to investigate this matter. |
Thanks very much for your patience while we figured it out! Can you add the test I provided so we have it captured for the future now? :) |
55662b8 to
23a4e81
Compare
… sider_value_indicator
Piinks
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM 🎊
Roll Flutter from 824868f5d1e6 to f79452e3f4ea (94 revisions) flutter/flutter@824868f...f79452e 2025-06-12 [email protected] Roll Skia from 38b9f9b0e496 to b41e7017658e (12 revisions) (flutter/flutter#170514) 2025-06-12 [email protected] Fix `Semantics.identifier` on TextField not working on web (flutter/flutter#170395) 2025-06-12 [email protected] Revert "[a11y] Semantics flag refactor step 2: embedder part" (flutter/flutter#170498) 2025-06-12 [email protected] Copy `packages_autoroller` to `dev/packages_autoroller/run`. (flutter/flutter#170495) 2025-06-11 [email protected] Allow the Slider to always show the value indicator. (flutter/flutter#162223) 2025-06-11 [email protected] Update master branch `CHANGELOG.md` for 3.32.3. (flutter/flutter#170492) 2025-06-11 [email protected] Add time to first frame for `Mac_arm64_ios imitation_game_swiftui` (flutter/flutter#167602) 2025-06-11 [email protected] Make `DropdownMenu` TextField reactive to label changes (flutter/flutter#162062) 2025-06-11 [email protected] Roll Dart SDK from b569246d64bc to 9f741ef8a689 (1 revision) (flutter/flutter#170473) 2025-06-11 [email protected] [impellerc] add GLES shader define. (flutter/flutter#170375) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Pause UIScene migration (#170457)" (flutter/flutter#170487) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix DropdownButtonFormField focusing when replacing FocusNode (#166645)" (flutter/flutter#170477) 2025-06-11 [email protected] Pause UIScene migration (flutter/flutter#170457) 2025-06-11 [email protected] iOS tool dylibs do not need entitlements (flutter/flutter#170448) 2025-06-11 [email protected] Adds getters for different formats of build mode name (flutter/flutter#170251) 2025-06-11 [email protected] Remove all code in `conductor/core` that is now unused (flutter/flutter#170454) 2025-06-11 [email protected] Roll Packages from 974f152 to 0b322a2 (9 revisions) (flutter/flutter#170462) 2025-06-11 [email protected] Roll Skia from b78fdc3ba26b to 38b9f9b0e496 (7 revisions) (flutter/flutter#170453) 2025-06-11 [email protected] Fix remaining iconbuttontheme overrides in listtile (flutter/flutter#169029) 2025-06-11 [email protected] Fix DropdownButtonFormField focusing when replacing FocusNode (flutter/flutter#166645) 2025-06-11 [email protected] Add CupertinoRadio widget of the week video (flutter/flutter#170027) 2025-06-11 [email protected] Docs: Update docs for suffix icon interaction behaviour (flutter/flutter#169828) 2025-06-11 [email protected] [ Widget Preview ] Don't try to load previews with compile-time errors (flutter/flutter#170262) 2025-06-11 [email protected] [canvaskit] Manually trigger `input` event in text editing tests for Safari (flutter/flutter#170022) 2025-06-11 [email protected] Tiny clean-up in triage docs (flutter/flutter#170429) 2025-06-11 [email protected] Roll pub packages (flutter/flutter#170444) 2025-06-11 [email protected] [Impeller] Avoid creating paths when rendering arcs (flutter/flutter#170398) 2025-06-11 [email protected] Fix date picker calendar tap targets (portrait mode) (flutter/flutter#169163) 2025-06-11 [email protected] Add SK_SUPPORT_UNSPANNED_APIS staging flag (flutter/flutter#170139) 2025-06-11 [email protected] Roll Dart SDK from 6290dfd1d88a to b569246d64bc (4 revisions) (flutter/flutter#170430) 2025-06-11 [email protected] Roll Skia from 910070084066 to b78fdc3ba26b (33 revisions) (flutter/flutter#170412) 2025-06-11 [email protected] Use pathops module groups (flutter/flutter#169857) 2025-06-10 [email protected] Roll pub packages (flutter/flutter#170399) 2025-06-10 [email protected] Verify old version of Python has the `lib2to3` import available (flutter/flutter#170187) 2025-06-10 [email protected] Use "flutter pub get" to resolve packages when building the docs snippets tool (flutter/flutter#170381) 2025-06-10 [email protected] [engine] Reland: ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170389) 2025-06-10 [email protected] Revert "Add call to Dart_NotifyDestroyed when the flutter view is des… (flutter/flutter#170309) 2025-06-10 [email protected] fix: set versionCodeOverride when split-per-abi is specified (flutter/flutter#169816) 2025-06-10 [email protected] fix: Skip native assets build test (flaky, takes 15m+) (flutter/flutter#170383) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc to be unflaky (flutter/flutter#167631) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc_hot_reload to be unflaky (flutter/flutter#168807) 2025-06-10 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (#170313)" (flutter/flutter#170377) 2025-06-10 [email protected] [a11y] Semantics flag refactor step 2: embedder part (flutter/flutter#167738) 2025-06-10 [email protected] Roll Dart SDK from c26e7ca44805 to 6290dfd1d88a (5 revisions) (flutter/flutter#170363) 2025-06-10 [email protected] Remove `pubspec.lock` files for `flutter_tools` and `widget_preview_scaffold`. (flutter/flutter#170364) 2025-06-10 [email protected] [engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170313) ...
…r#9419) Roll Flutter from 824868f5d1e6 to f79452e3f4ea (94 revisions) flutter/flutter@824868f...f79452e 2025-06-12 [email protected] Roll Skia from 38b9f9b0e496 to b41e7017658e (12 revisions) (flutter/flutter#170514) 2025-06-12 [email protected] Fix `Semantics.identifier` on TextField not working on web (flutter/flutter#170395) 2025-06-12 [email protected] Revert "[a11y] Semantics flag refactor step 2: embedder part" (flutter/flutter#170498) 2025-06-12 [email protected] Copy `packages_autoroller` to `dev/packages_autoroller/run`. (flutter/flutter#170495) 2025-06-11 [email protected] Allow the Slider to always show the value indicator. (flutter/flutter#162223) 2025-06-11 [email protected] Update master branch `CHANGELOG.md` for 3.32.3. (flutter/flutter#170492) 2025-06-11 [email protected] Add time to first frame for `Mac_arm64_ios imitation_game_swiftui` (flutter/flutter#167602) 2025-06-11 [email protected] Make `DropdownMenu` TextField reactive to label changes (flutter/flutter#162062) 2025-06-11 [email protected] Roll Dart SDK from b569246d64bc to 9f741ef8a689 (1 revision) (flutter/flutter#170473) 2025-06-11 [email protected] [impellerc] add GLES shader define. (flutter/flutter#170375) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Pause UIScene migration (#170457)" (flutter/flutter#170487) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix DropdownButtonFormField focusing when replacing FocusNode (#166645)" (flutter/flutter#170477) 2025-06-11 [email protected] Pause UIScene migration (flutter/flutter#170457) 2025-06-11 [email protected] iOS tool dylibs do not need entitlements (flutter/flutter#170448) 2025-06-11 [email protected] Adds getters for different formats of build mode name (flutter/flutter#170251) 2025-06-11 [email protected] Remove all code in `conductor/core` that is now unused (flutter/flutter#170454) 2025-06-11 [email protected] Roll Packages from 974f152 to 0b322a2 (9 revisions) (flutter/flutter#170462) 2025-06-11 [email protected] Roll Skia from b78fdc3ba26b to 38b9f9b0e496 (7 revisions) (flutter/flutter#170453) 2025-06-11 [email protected] Fix remaining iconbuttontheme overrides in listtile (flutter/flutter#169029) 2025-06-11 [email protected] Fix DropdownButtonFormField focusing when replacing FocusNode (flutter/flutter#166645) 2025-06-11 [email protected] Add CupertinoRadio widget of the week video (flutter/flutter#170027) 2025-06-11 [email protected] Docs: Update docs for suffix icon interaction behaviour (flutter/flutter#169828) 2025-06-11 [email protected] [ Widget Preview ] Don't try to load previews with compile-time errors (flutter/flutter#170262) 2025-06-11 [email protected] [canvaskit] Manually trigger `input` event in text editing tests for Safari (flutter/flutter#170022) 2025-06-11 [email protected] Tiny clean-up in triage docs (flutter/flutter#170429) 2025-06-11 [email protected] Roll pub packages (flutter/flutter#170444) 2025-06-11 [email protected] [Impeller] Avoid creating paths when rendering arcs (flutter/flutter#170398) 2025-06-11 [email protected] Fix date picker calendar tap targets (portrait mode) (flutter/flutter#169163) 2025-06-11 [email protected] Add SK_SUPPORT_UNSPANNED_APIS staging flag (flutter/flutter#170139) 2025-06-11 [email protected] Roll Dart SDK from 6290dfd1d88a to b569246d64bc (4 revisions) (flutter/flutter#170430) 2025-06-11 [email protected] Roll Skia from 910070084066 to b78fdc3ba26b (33 revisions) (flutter/flutter#170412) 2025-06-11 [email protected] Use pathops module groups (flutter/flutter#169857) 2025-06-10 [email protected] Roll pub packages (flutter/flutter#170399) 2025-06-10 [email protected] Verify old version of Python has the `lib2to3` import available (flutter/flutter#170187) 2025-06-10 [email protected] Use "flutter pub get" to resolve packages when building the docs snippets tool (flutter/flutter#170381) 2025-06-10 [email protected] [engine] Reland: ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170389) 2025-06-10 [email protected] Revert "Add call to Dart_NotifyDestroyed when the flutter view is des… (flutter/flutter#170309) 2025-06-10 [email protected] fix: set versionCodeOverride when split-per-abi is specified (flutter/flutter#169816) 2025-06-10 [email protected] fix: Skip native assets build test (flaky, takes 15m+) (flutter/flutter#170383) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc to be unflaky (flutter/flutter#167631) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc_hot_reload to be unflaky (flutter/flutter#168807) 2025-06-10 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (#170313)" (flutter/flutter#170377) 2025-06-10 [email protected] [a11y] Semantics flag refactor step 2: embedder part (flutter/flutter#167738) 2025-06-10 [email protected] Roll Dart SDK from c26e7ca44805 to 6290dfd1d88a (5 revisions) (flutter/flutter#170363) 2025-06-10 [email protected] Remove `pubspec.lock` files for `flutter_tools` and `widget_preview_scaffold`. (flutter/flutter#170364) 2025-06-10 [email protected] [engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170313) ...
Fixes: flutter#34704 Modified enum `ShowValueIndicator` before: ```dart enum ShowValueIndicator { onlyForDiscrete, onlyForContinuous, always, never, } ``` after: ```dart enum ShowValueIndicator { onlyForDiscrete, onlyForContinuous, @deprecated( 'Use ShowValueIndicator.onDrag. ' 'This feature was deprecated after v3.28.0-1.0.pre.', ) always, onDrag, alwaysVisible, never, } ``` To maintain previous behavior, `ShowValueIndicator.onlyForDiscrete` and `ShowValueIndicator.onlyForContinuous` are still retained. The behavior of `ShowValueIndicator.always` remains consistent with the previous implementation, but it is marked as deprecated and should be replaced with `ShowValueIndicator.onDrag`. A new `ShowValueIndicator.alwaysVisible` has been added to show the value indicator even when not dragging. Additionally, the value indicator is now rendered by `OverlayPortal`. *If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].* ## Pre-launch Checklist - [x] I read the [Contributor Guide] and followed the process outlined there for submitting PRs. - [x] I read the [Tree Hygiene] wiki page, which explains my responsibilities. - [x] I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement]. - [x] I signed the [CLA]. - [x] I listed at least one issue that this PR fixes in the description above. - [ ] I updated/added relevant documentation (doc comments with `///`). - [x] I added new tests to check the change I am making, or this PR is [test-exempt]. - [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
…r#9419) Roll Flutter from 824868f5d1e6 to f79452e3f4ea (94 revisions) flutter/flutter@824868f...f79452e 2025-06-12 [email protected] Roll Skia from 38b9f9b0e496 to b41e7017658e (12 revisions) (flutter/flutter#170514) 2025-06-12 [email protected] Fix `Semantics.identifier` on TextField not working on web (flutter/flutter#170395) 2025-06-12 [email protected] Revert "[a11y] Semantics flag refactor step 2: embedder part" (flutter/flutter#170498) 2025-06-12 [email protected] Copy `packages_autoroller` to `dev/packages_autoroller/run`. (flutter/flutter#170495) 2025-06-11 [email protected] Allow the Slider to always show the value indicator. (flutter/flutter#162223) 2025-06-11 [email protected] Update master branch `CHANGELOG.md` for 3.32.3. (flutter/flutter#170492) 2025-06-11 [email protected] Add time to first frame for `Mac_arm64_ios imitation_game_swiftui` (flutter/flutter#167602) 2025-06-11 [email protected] Make `DropdownMenu` TextField reactive to label changes (flutter/flutter#162062) 2025-06-11 [email protected] Roll Dart SDK from b569246d64bc to 9f741ef8a689 (1 revision) (flutter/flutter#170473) 2025-06-11 [email protected] [impellerc] add GLES shader define. (flutter/flutter#170375) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Pause UIScene migration (#170457)" (flutter/flutter#170487) 2025-06-11 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Fix DropdownButtonFormField focusing when replacing FocusNode (#166645)" (flutter/flutter#170477) 2025-06-11 [email protected] Pause UIScene migration (flutter/flutter#170457) 2025-06-11 [email protected] iOS tool dylibs do not need entitlements (flutter/flutter#170448) 2025-06-11 [email protected] Adds getters for different formats of build mode name (flutter/flutter#170251) 2025-06-11 [email protected] Remove all code in `conductor/core` that is now unused (flutter/flutter#170454) 2025-06-11 [email protected] Roll Packages from 974f152 to 0b322a2 (9 revisions) (flutter/flutter#170462) 2025-06-11 [email protected] Roll Skia from b78fdc3ba26b to 38b9f9b0e496 (7 revisions) (flutter/flutter#170453) 2025-06-11 [email protected] Fix remaining iconbuttontheme overrides in listtile (flutter/flutter#169029) 2025-06-11 [email protected] Fix DropdownButtonFormField focusing when replacing FocusNode (flutter/flutter#166645) 2025-06-11 [email protected] Add CupertinoRadio widget of the week video (flutter/flutter#170027) 2025-06-11 [email protected] Docs: Update docs for suffix icon interaction behaviour (flutter/flutter#169828) 2025-06-11 [email protected] [ Widget Preview ] Don't try to load previews with compile-time errors (flutter/flutter#170262) 2025-06-11 [email protected] [canvaskit] Manually trigger `input` event in text editing tests for Safari (flutter/flutter#170022) 2025-06-11 [email protected] Tiny clean-up in triage docs (flutter/flutter#170429) 2025-06-11 [email protected] Roll pub packages (flutter/flutter#170444) 2025-06-11 [email protected] [Impeller] Avoid creating paths when rendering arcs (flutter/flutter#170398) 2025-06-11 [email protected] Fix date picker calendar tap targets (portrait mode) (flutter/flutter#169163) 2025-06-11 [email protected] Add SK_SUPPORT_UNSPANNED_APIS staging flag (flutter/flutter#170139) 2025-06-11 [email protected] Roll Dart SDK from 6290dfd1d88a to b569246d64bc (4 revisions) (flutter/flutter#170430) 2025-06-11 [email protected] Roll Skia from 910070084066 to b78fdc3ba26b (33 revisions) (flutter/flutter#170412) 2025-06-11 [email protected] Use pathops module groups (flutter/flutter#169857) 2025-06-10 [email protected] Roll pub packages (flutter/flutter#170399) 2025-06-10 [email protected] Verify old version of Python has the `lib2to3` import available (flutter/flutter#170187) 2025-06-10 [email protected] Use "flutter pub get" to resolve packages when building the docs snippets tool (flutter/flutter#170381) 2025-06-10 [email protected] [engine] Reland: ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170389) 2025-06-10 [email protected] Revert "Add call to Dart_NotifyDestroyed when the flutter view is des… (flutter/flutter#170309) 2025-06-10 [email protected] fix: set versionCodeOverride when split-per-abi is specified (flutter/flutter#169816) 2025-06-10 [email protected] fix: Skip native assets build test (flaky, takes 15m+) (flutter/flutter#170383) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc to be unflaky (flutter/flutter#167631) 2025-06-10 [email protected] Marks Linux web_benchmarks_ddc_hot_reload to be unflaky (flutter/flutter#168807) 2025-06-10 98614782+auto-submit[bot]@users.noreply.github.com Reverts "[engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (#170313)" (flutter/flutter#170377) 2025-06-10 [email protected] [a11y] Semantics flag refactor step 2: embedder part (flutter/flutter#167738) 2025-06-10 [email protected] Roll Dart SDK from c26e7ca44805 to 6290dfd1d88a (5 revisions) (flutter/flutter#170363) 2025-06-10 [email protected] Remove `pubspec.lock` files for `flutter_tools` and `widget_preview_scaffold`. (flutter/flutter#170364) 2025-06-10 [email protected] [engine] ensure engines spawned from an engine using dynamic rendering selection still use the dynamic surface. (flutter/flutter#170313) ...

Fixes: #34704
Modified enum
ShowValueIndicatorbefore:
after:
To maintain previous behavior,
ShowValueIndicator.onlyForDiscreteandShowValueIndicator.onlyForContinuousare still retained.The behavior of
ShowValueIndicator.alwaysremains consistent with the previous implementation, but it is marked as deprecated and should be replaced withShowValueIndicator.onDrag. A newShowValueIndicator.alwaysVisiblehas been added to show the value indicator even when not dragging.Additionally, the value indicator is now rendered by
OverlayPortal.If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist
///).If you need help, consider asking for advice on the #hackers-new channel on Discord.