如何在颤动中构建动态范围滑块?
How to build a dynamic range slider in flutter?
我想构建一个动态范围滑块,我通过选择一个下拉按钮来更新范围滑块的值(最小值、最大值和分区)。
有这方面的例子吗?我没有在互联网上找到任何内容。
谢谢!
您可以使用股票 RangeSlider
小部件以及 low 和 high 值作为状态。然后,您可以在 setState((){})
中更改这些值,滑块将相应更新。
这是一个示例,其中 FloatingActionButton
将值设置为 4 和 6 :
class _MyHomePageState extends State<MyHomePage> {
static const min = 0.0;
static const max = 10.0;
double low = min;
double high = max;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RangeSlider(
min: min,
max: max,
values: RangeValues(low, high),
onChanged: (values) => setState((){
low = values.start;
high = values.end;
}),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => setState((){
low = 4;
high = 6;
}),
child: Icon(Icons.add),
),
);
}
}
//initialize this line
RangeValues _currentRangeValues = const RangeValues(10, 1000);
//use this widget
RangeSlider(
values: _currentRangeValues,
max: 1000,
activeColor: colorPrimary,
divisions: 100,
labels: RangeLabels(
_currentRangeValues.start.round().toString(),
_currentRangeValues.end.round().toString()),
onChanged: (RangeValues values) {
setState(() {
_currentRangeValues = values;
});
}),
// and dynamically update value use this line
setState(() {
_currentRangeValues = const RangeValues(10, 1000);
});
我想构建一个动态范围滑块,我通过选择一个下拉按钮来更新范围滑块的值(最小值、最大值和分区)。 有这方面的例子吗?我没有在互联网上找到任何内容。 谢谢!
您可以使用股票 RangeSlider
小部件以及 low 和 high 值作为状态。然后,您可以在 setState((){})
中更改这些值,滑块将相应更新。
这是一个示例,其中 FloatingActionButton
将值设置为 4 和 6 :
class _MyHomePageState extends State<MyHomePage> {
static const min = 0.0;
static const max = 10.0;
double low = min;
double high = max;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RangeSlider(
min: min,
max: max,
values: RangeValues(low, high),
onChanged: (values) => setState((){
low = values.start;
high = values.end;
}),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: () => setState((){
low = 4;
high = 6;
}),
child: Icon(Icons.add),
),
);
}
}
//initialize this line
RangeValues _currentRangeValues = const RangeValues(10, 1000);
//use this widget
RangeSlider(
values: _currentRangeValues,
max: 1000,
activeColor: colorPrimary,
divisions: 100,
labels: RangeLabels(
_currentRangeValues.start.round().toString(),
_currentRangeValues.end.round().toString()),
onChanged: (RangeValues values) {
setState(() {
_currentRangeValues = values;
});
}),
// and dynamically update value use this line
setState(() {
_currentRangeValues = const RangeValues(10, 1000);
});