getSliderWithMark method
Widget
getSliderWithMark(
- List marks,
- ValueNotifier<
int> sValue, - SliderThemeData sliderThemeData,
- TextStyle textStyle,
- HMOrientation sliderOrientation,
Implementation
Widget getSliderWithMark(
List marks,
ValueNotifier<int> sValue,
SliderThemeData sliderThemeData,
TextStyle textStyle,
HMOrientation sliderOrientation) {
final List a = marks.map((e) => e.value).toList();
final sliderVal =
useState(a.contains(sValue.value) ? a.indexOf(sValue.value) : 0);
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 10),
child: SliderTheme(
data: sliderThemeData,
child: Slider(
max: marks.length - 1.0,
value: sliderVal.value.toDouble(),
divisions: marks.length - 1,
label: '${marks[sliderVal.value].label}',
onChanged: (value) {
sliderVal.value = value.toInt();
},
onChangeEnd: (value) {
onChange(sliderVal.value);
},
),
),
),
if (sliderOrientation == HMOrientation.vertical)
const SizedBox(height: 6)
else
Container(),
Container(
margin: const EdgeInsets.only(left: 5, right: 5),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: marks.map((e) {
return Transform.rotate(
angle: sliderOrientation == HMOrientation.horizontal
? 0
: math.pi / 2,
child: SizedBox(
// color: Colors.amber,
width: 40,
child: Text(
'${e.label}',
textAlign: TextAlign.center,
style: textStyle,
)),
);
}).toList(),
),
),
],
);
}