Reputation: 6229
My code:
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: SliderTheme(
data: SliderTheme.of(context).copyWith(
inactiveTrackColor: Color(0xff8d8e98),
activeTrackColor: Colors.white,
thumbColor: Color(0xffeb1555),
overlayColor: Color(0x29eb1555),
thumbShape: RoundSliderThumbShape(enabledThumbRadius: 15),
overlayShape: RoundSliderOverlayShape(overlayRadius: 30),
trackHeight: 2,
),
child: Slider(
value: 183,
min: 10,
max: 270,
onChanged: (double value) {},
),
),
),
I got this:
I expected this:
How can I get it?
Upvotes: 13
Views: 6429
Reputation: 619
If you must use the RoundedRectSliderTrackShape()
specifically as you need the rounded edge, then simply create a CustomTrackShape()
and override the value of additionalActiveTrackHeight
to 0.
class CustomTrackShape extends RoundedRectSliderTrackShape {
@override
void paint(PaintingContext context, Offset offset,
{required RenderBox parentBox,
required SliderThemeData sliderTheme,
required Animation<double> enableAnimation,
required TextDirection textDirection,
required Offset thumbCenter,
bool isDiscrete = false,
bool isEnabled = false,
double additionalActiveTrackHeight = 2}) {
super.paint(context, offset,
parentBox: parentBox,
sliderTheme: sliderTheme,
enableAnimation: enableAnimation,
textDirection: textDirection,
thumbCenter: thumbCenter,
isDiscrete: isDiscrete,
isEnabled: isEnabled,
additionalActiveTrackHeight: 0);
}
}
Upvotes: 16
Reputation: 366
This is a liitle bit late, but, as I just solved that to myself, I thought it could be useful to others:
You should include, in the SliderTheme data the following:
trackShape: RectangularSliderTrackShape(),
And that is it, you will get both active and inactive track with the same height!
Upvotes: 24
Reputation: 1534
Just update trackHeight to 1. This would make it better.
Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: SliderTheme(
data: SliderTheme.of(context).copyWith(
inactiveTrackColor: Color(0xff8d8e98),
activeTrackColor: Colors.white,
thumbColor: Color(0xffeb1555),
overlayColor: Color(0x29eb1555),
thumbShape: RoundSliderThumbShape(enabledThumbRadius: 15),
overlayShape: RoundSliderOverlayShape(overlayRadius: 30),
trackHeight: 1,
),
child: Slider(
value: 183,
min: 10,
max: 270,
onChanged: (double value) {},
),
),
),
Upvotes: 4