diff --git a/lib/widgets/app_slider.dart b/lib/widgets/app_slider.dart index 5e054ec5..5ca79b80 100644 --- a/lib/widgets/app_slider.dart +++ b/lib/widgets/app_slider.dart @@ -16,6 +16,7 @@ class AppSlider extends StatelessWidget { this.label, this.semanticFormatterCallback, this.trackThickness, + this.thumbLength, }); final double value; @@ -31,6 +32,10 @@ class AppSlider extends StatelessWidget { /// default extra-small track. final double? trackThickness; + /// Expressive handle height; shorten it together with a thinner track so + /// the handle stays in proportion. + final double? thumbLength; + @override Widget build(BuildContext context) { if (!materialExpressiveEnabled(context)) { @@ -54,6 +59,7 @@ class AppSlider extends StatelessWidget { label: label, semanticFormatterCallback: semanticFormatterCallback, trackThickness: trackThickness, + thumbLength: thumbLength, enabled: onChanged != null, onChanged: onChanged, onChangeEnd: onChangeEnd, diff --git a/lib/widgets/player_volume_control.dart b/lib/widgets/player_volume_control.dart index f7a90339..b005a394 100644 --- a/lib/widgets/player_volume_control.dart +++ b/lib/widgets/player_volume_control.dart @@ -206,8 +206,9 @@ class _PlayerVolumeControlState extends ConsumerState { onPointerCancel: (_) => release(), child: AppSlider( // Thinner than the default track: volume stays secondary - // to the seek bar above it. + // to the seek bar above it. The handle shrinks with it. trackThickness: 8, + thumbLength: 24, value: value, onChanged: enabled ? _setVolume : null, onChangeEnd: _setVolume,