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
add support to customize Slider interacivity #121483
Conversation
/// does not look disabled. | ||
none; | ||
|
||
bool _isSlideOnTrack() => this == SliderInteraction.slideOnTrack; |
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.
Normally we use switch statements when working with enums. There is some reasoning on this in the style guide:
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.
ohh that's interesting, thanks for pointing that out.
EDIT: after looking into it, i realized that i'm not examining the enum at one place, rather evaluating different values in different places depending on the usecase. i can move the ==
checks to the if
statements below if that'll make it more consistent with the style guide. lemme know your thoughts.
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 if/else statements should really be converted to switch statements. That way it is clear what is/isn't happening for each type of interaction, and more importantly, this will ensure the analyzer warns us if we ever change the values of the enum
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.
done ✅, PTAL.
@TahaTesser may also have some thoughts on this |
@werainkhatri |
yes! have been busy with work. will do it soon. |
294e81a
to
8a11c04
Compare
@werainkhatri
I don't see a reason to not add this to the |
thank you so much! glad to hear that. will do the same by the weekend as I'm travelling now. |
fcd3dc0
to
98f25c4
Compare
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 looks very close! Can you update the docs a bit more?
thanks for the review, and fixing the style. could you help me with this from the description?
also, are the names of classes and arguments okay? |
You can add them as it is, we can always edit the names before finalizing this. |
expect(value, expectYesOrNo ? equals(0.5) : isNot(equals(0.5)), | ||
reason: 'allowedInteraction is $whileTesting'); |
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.
expect(value, expectYesOrNo ? equals(0.5) : isNot(equals(0.5)), | |
reason: 'allowedInteraction is $whileTesting'); | |
expect(value, expectYesOrNo ? equals(0.5) : isNot(equals(0.5)), | |
reason: 'allowedInteraction is $whileTesting'); |
This is a bit hard to read.
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 agree. The expectYesOrNo
is difficult to follow. It is ok for tests to be a bit more verbose and written out for each test case.
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.
yeah that makes sense. sorry about that. i went overboard with the DRY principle, but at the cost of readability. improved it now.
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.
Looks like there is just some semantic refactoring in the tests left to do here. Thanks very much for your patience on this!
ff4bfe8
to
21ca4e8
Compare
…3874) Manual roll Flutter from 66fa4c5d301c to 828a04040e11 (79 revisions) Manual roll requested by tarrinneal@google.com flutter/flutter@66fa4c5...828a040 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 666bc34c61aa to 687f4c761db1 (2 revisions) (flutter/flutter#125818) 2023-05-01 34871572+gmackall@users.noreply.github.com Revert "Add migrator to upgrade gradle version when conflict with And… (flutter/flutter#125813) 2023-05-01 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125801) 2023-05-01 andrewrkolos@gmail.com [tools] fix `expect` calls in `FakeCommand` (flutter/flutter#125783) 2023-05-01 engine-flutter-autoroll@skia.org Roll Packages from 7e3f5da to de6131d (41 revisions) (flutter/flutter#125811) 2023-05-01 tessertaha@gmail.com Introduce `TabBar.tabAlignment` (flutter/flutter#125036) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from b0da68e7e024 to 666bc34c61aa (1 revision) (flutter/flutter#125805) 2023-05-01 44755140+werainkhatri@users.noreply.github.com add support to customize Slider interacivity (flutter/flutter#121483) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from b4551c72487c to b0da68e7e024 (1 revision) (flutter/flutter#125800) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 605528f293d0 to b4551c72487c (1 revision) (flutter/flutter#125795) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from bba66b658cee to 605528f293d0 (2 revisions) (flutter/flutter#125793) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2fa61b91d7c2 to bba66b658cee (1 revision) (flutter/flutter#125791) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 30c91b8180e7 to 2fa61b91d7c2 (1 revision) (flutter/flutter#125789) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from d76a22e67eea to 30c91b8180e7 (1 revision) (flutter/flutter#125787) 2023-05-01 andrewrkolos@gmail.com [tools] Apply Android Studio version detection logic to explicitly configured installation directory (`flutter config --android-studio-dir`) (flutter/flutter#125596) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from f234d5e1dd26 to d76a22e67eea (1 revision) (flutter/flutter#125776) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from c796390d14cb to f234d5e1dd26 (1 revision) (flutter/flutter#125773) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from e99f31f4437d to c796390d14cb (1 revision) (flutter/flutter#125762) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1942b0c2cd9a to e99f31f4437d (1 revision) (flutter/flutter#125758) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from 7806f8a4fb4c to 1942b0c2cd9a (1 revision) (flutter/flutter#125757) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8167f909bc8d to 7806f8a4fb4c (2 revisions) (flutter/flutter#125750) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 900b8a89b73b to 8167f909bc8d (1 revision) (flutter/flutter#125748) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from c56ea398b0dc to 900b8a89b73b (1 revision) (flutter/flutter#125747) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0834c886f06a to c56ea398b0dc (1 revision) (flutter/flutter#125746) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 68f2ed0a1db5 to 0834c886f06a (1 revision) (flutter/flutter#125736) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0079bb4a20d0 to 68f2ed0a1db5 (1 revision) (flutter/flutter#125735) 2023-04-29 dnfield@google.com Fix crasher in DragableScrollableSheet when controller is animating and switching widgets (flutter/flutter#125721) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8f04b29c1b98 to 0079bb4a20d0 (2 revisions) (flutter/flutter#125734) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 788d0ed5ed06 to 8f04b29c1b98 (1 revision) (flutter/flutter#125731) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 89a8affdced0 to 788d0ed5ed06 (1 revision) (flutter/flutter#125729) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3835d975c8b0 to 89a8affdced0 (2 revisions) (flutter/flutter#125725) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1ae848ce6b55 to 3835d975c8b0 (1 revision) (flutter/flutter#125722) 2023-04-29 65850618+Anas35@users.noreply.github.com fix package template create platform folders (flutter/flutter#125292) 2023-04-28 thkim1011@users.noreply.github.com Sliver Cross Axis Group (flutter/flutter#123862) 2023-04-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2a84ea55e4ef to 1ae848ce6b55 (1 revision) (flutter/flutter#125718) 2023-04-28 zanderso@users.noreply.github.com Remove bringup from new_gallery_skia_ios__transition_perf (flutter/flutter#125715) 2023-04-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 98b6fabc66bb to 2a84ea55e4ef (10 revisions) (flutter/flutter#125714) 2023-04-28 109111084+yaakovschectman@users.noreply.github.com Opt into CMake policy CMP0135 (flutter/flutter#125502) 2023-04-28 leroux_bruno@yahoo.fr Add a channel to query the engine keyboard state (flutter/flutter#122885) 2023-04-28 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125698) 2023-04-28 36861262+QuncCccccc@users.noreply.github.com `Checkbox.fillColor` should be applied to checkbox's background color when it is unchecked. (flutter/flutter#125643) 2023-04-28 zanderso@users.noreply.github.com Add back one Skia test on iOS (flutter/flutter#125663) 2023-04-28 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125447) 2023-04-28 97679004+phlippieb-discovery@users.noreply.github.com Nit: grammar in documentation (flutter/flutter#125462) ...
…lutter#3874) Manual roll Flutter from 66fa4c5d301c to 828a04040e11 (79 revisions) Manual roll requested by tarrinneal@google.com flutter/flutter@66fa4c5...828a040 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 666bc34c61aa to 687f4c761db1 (2 revisions) (flutter/flutter#125818) 2023-05-01 34871572+gmackall@users.noreply.github.com Revert "Add migrator to upgrade gradle version when conflict with And… (flutter/flutter#125813) 2023-05-01 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125801) 2023-05-01 andrewrkolos@gmail.com [tools] fix `expect` calls in `FakeCommand` (flutter/flutter#125783) 2023-05-01 engine-flutter-autoroll@skia.org Roll Packages from 7e3f5da to de6131d (41 revisions) (flutter/flutter#125811) 2023-05-01 tessertaha@gmail.com Introduce `TabBar.tabAlignment` (flutter/flutter#125036) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from b0da68e7e024 to 666bc34c61aa (1 revision) (flutter/flutter#125805) 2023-05-01 44755140+werainkhatri@users.noreply.github.com add support to customize Slider interacivity (flutter/flutter#121483) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from b4551c72487c to b0da68e7e024 (1 revision) (flutter/flutter#125800) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 605528f293d0 to b4551c72487c (1 revision) (flutter/flutter#125795) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from bba66b658cee to 605528f293d0 (2 revisions) (flutter/flutter#125793) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2fa61b91d7c2 to bba66b658cee (1 revision) (flutter/flutter#125791) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from 30c91b8180e7 to 2fa61b91d7c2 (1 revision) (flutter/flutter#125789) 2023-05-01 engine-flutter-autoroll@skia.org Roll Flutter Engine from d76a22e67eea to 30c91b8180e7 (1 revision) (flutter/flutter#125787) 2023-05-01 andrewrkolos@gmail.com [tools] Apply Android Studio version detection logic to explicitly configured installation directory (`flutter config --android-studio-dir`) (flutter/flutter#125596) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from f234d5e1dd26 to d76a22e67eea (1 revision) (flutter/flutter#125776) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from c796390d14cb to f234d5e1dd26 (1 revision) (flutter/flutter#125773) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from e99f31f4437d to c796390d14cb (1 revision) (flutter/flutter#125762) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1942b0c2cd9a to e99f31f4437d (1 revision) (flutter/flutter#125758) 2023-04-30 engine-flutter-autoroll@skia.org Roll Flutter Engine from 7806f8a4fb4c to 1942b0c2cd9a (1 revision) (flutter/flutter#125757) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8167f909bc8d to 7806f8a4fb4c (2 revisions) (flutter/flutter#125750) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 900b8a89b73b to 8167f909bc8d (1 revision) (flutter/flutter#125748) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from c56ea398b0dc to 900b8a89b73b (1 revision) (flutter/flutter#125747) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0834c886f06a to c56ea398b0dc (1 revision) (flutter/flutter#125746) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 68f2ed0a1db5 to 0834c886f06a (1 revision) (flutter/flutter#125736) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 0079bb4a20d0 to 68f2ed0a1db5 (1 revision) (flutter/flutter#125735) 2023-04-29 dnfield@google.com Fix crasher in DragableScrollableSheet when controller is animating and switching widgets (flutter/flutter#125721) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 8f04b29c1b98 to 0079bb4a20d0 (2 revisions) (flutter/flutter#125734) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 788d0ed5ed06 to 8f04b29c1b98 (1 revision) (flutter/flutter#125731) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 89a8affdced0 to 788d0ed5ed06 (1 revision) (flutter/flutter#125729) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 3835d975c8b0 to 89a8affdced0 (2 revisions) (flutter/flutter#125725) 2023-04-29 engine-flutter-autoroll@skia.org Roll Flutter Engine from 1ae848ce6b55 to 3835d975c8b0 (1 revision) (flutter/flutter#125722) 2023-04-29 65850618+Anas35@users.noreply.github.com fix package template create platform folders (flutter/flutter#125292) 2023-04-28 thkim1011@users.noreply.github.com Sliver Cross Axis Group (flutter/flutter#123862) 2023-04-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 2a84ea55e4ef to 1ae848ce6b55 (1 revision) (flutter/flutter#125718) 2023-04-28 zanderso@users.noreply.github.com Remove bringup from new_gallery_skia_ios__transition_perf (flutter/flutter#125715) 2023-04-28 engine-flutter-autoroll@skia.org Roll Flutter Engine from 98b6fabc66bb to 2a84ea55e4ef (10 revisions) (flutter/flutter#125714) 2023-04-28 109111084+yaakovschectman@users.noreply.github.com Opt into CMake policy CMP0135 (flutter/flutter#125502) 2023-04-28 leroux_bruno@yahoo.fr Add a channel to query the engine keyboard state (flutter/flutter#122885) 2023-04-28 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125698) 2023-04-28 36861262+QuncCccccc@users.noreply.github.com `Checkbox.fillColor` should be applied to checkbox's background color when it is unchecked. (flutter/flutter#125643) 2023-04-28 zanderso@users.noreply.github.com Add back one Skia test on iOS (flutter/flutter#125663) 2023-04-28 fluttergithubbot@gmail.com Roll pub packages (flutter/flutter#125447) 2023-04-28 97679004+phlippieb-discovery@users.noreply.github.com Nit: grammar in documentation (flutter/flutter#125462) ...
… on `SliderInteraction.slideOnly` allowed interaction (#136720) fixes [Slider will call onChanged before onChangeStart when sliding.](#136707) This fixes a regression from #121483 ### Code sample <details> <summary>expand to view the code sample</summary> ```dart import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); class MyApp extends StatelessWidget { const MyApp({super.key}); @OverRide Widget build(BuildContext context) { return const MaterialApp( debugShowCheckedModeBanner: false, home: Example(), ); } } class Example extends StatefulWidget { const Example({super.key}); @OverRide State<Example> createState() => _ExampleState(); } class _ExampleState extends State<Example> { double _sliderValue = 0.5; @OverRide Widget build(BuildContext context) { return Scaffold( body: Center( child: Slider( // allowedInteraction: SliderInteraction.tapAndSlide, // allowedInteraction: SliderInteraction.tapOnly, // allowedInteraction: SliderInteraction.slideOnly // allowedInteraction: SliderInteraction.slideThumb, value: _sliderValue, onChangeStart: (newValue) { print("onChangeStart ......"); }, onChanged: (newValue) { print("onChanged ......"); setState(() { _sliderValue = newValue; }); }, onChangeEnd: (newValue) { print("onChangeEnd ......"); }, ), ), ); } } ``` </details>
design doc: https://docs.flutter.dev/go/permissible-slider-interaction
closes #113370
open questions:
debugFillProperties
? I see only a few things existing in that list.SliderInteraction.none
is handled differently thanonChanged
being null.SliderInteraction.none
doesn't exist anymore.Slider.allowedInteraction
be added toSliderTheme
too?SliderInteraction.slideThumb
use the actual thumb rect or overlay rect to determine if the user has tapped down on the “thumb”?SliderInteraction.slideOnTrack
be renamed toSliderInteraction.slideOnly
coz its essentially that?Pre-launch Checklist
///
).