这里的slider其实就是Android中的seekBar,其最基本的使用如下
class SliderDemo extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return _SliderDemoState();
}
}
class _SliderDemoState extends State<SliderDemo> {
double _value = 0.0;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
children: <Widget>[
Padding(
padding: EdgeInsets.only(left: 20, top: 80),
child: Slider(
//最小值
min: 0.0,
//最大值
max: 100.0,
//每次移动的单位
divisions: 10,
//当前值
value: _value,
//滑过的进度以及上面显示当前值的颜色
activeColor: Colors.orange,
//未滑过的进度条的颜色
inactiveColor: Colors.black45,
//显示当前值
label: 'value:$_value',
//滑动时触发
onChanged: (double) {
if (mounted)
setState(() {
_value = double.roundToDouble();
});
},
),
)
],
),
),
);
}
}

SliderTheme(
data: SliderTheme.of(context).copyWith(
//完成进度中的单位分隔符断线中间间隔的颜色
activeTickMarkColor: Colors.yellowAccent,
activeTrackColor: Colors.orange,
//滑块的颜色
thumbColor: Colors.lightGreenAccent,
//未完成进度中的单位分隔符断线中间间隔的颜色
inactiveTickMarkColor: Colors.blue,
inactiveTrackColor: Colors.deepPurple,
//提示气泡的背景色
valueIndicatorColor: Colors.cyanAccent,
valueIndicatorTextStyle: TextStyle(color: Colors.white),
//点击滑块时放大那一圈的颜色
overlayColor: Colors.pink),
child: Container(
width: 340.0,
margin: EdgeInsets.fromLTRB(0.0, 50.0, 0.0, 0.0),
child: Row(
children: <Widget>[
Text('0.0'),
Expanded(
flex: 1,
child: Slider(
value: _value,
label: '$_value',
divisions: 10,
onChanged: (double) {
setState(() {
_value = double.floorToDouble(); //转化成double
});
},
min: 0.0,
max: 100.0,
),
),
Text('100.0'),
],
),
),
)
如果要自定义的话是以SliderTheme为parent,并且在这里定义需要修改的内容,它的child中包含slider即可(这里的slider就是自定义的样式)

