getRangeSliderwithMark method
Widget
getRangeSliderwithMark(
- List marks,
- ValueNotifier<
RangeValues> rangeValues, - SliderThemeData sliderThemeData,
- TextStyle textStyle,
- HMOrientation sliderOrientation,
Implementation
Widget getRangeSliderwithMark(
List marks,
ValueNotifier<RangeValues> rangeValues,
SliderThemeData sliderThemeData,
TextStyle textStyle,
HMOrientation sliderOrientation) {
final List a = marks.map((e) => e.value).toList();
final range = useState(RangeValues(
a.contains(rangeValues.value.start)
? a.indexOf(rangeValues.value.start).toDouble()
: 0.0,
a.contains(rangeValues.value.end)
? a.indexOf(rangeValues.value.end).toDouble()
: marks.length - 1));
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Padding(
padding: const EdgeInsets.symmetric(horizontal: 20),
child: SliderTheme(
data: sliderThemeData,
child: RangeSlider(
values: range.value,
max: marks.length - 1.0,
divisions: marks.length - 1,
labels: RangeLabels('${marks[range.value.start.toInt()].label}',
'${marks[range.value.end.toInt()].label}'),
onChanged: (newRanges) {
range.value = newRanges;
},
onChangeEnd: (newRanges) {
onChange([range.value.start.toInt(), range.value.end.toInt()]);
},
),
),
),
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(
width: 40,
child: Text(
'${e.label}',
textAlign: TextAlign.center,
style: textStyle,
)),
);
}).toList(),
),
),
],
);
}