📅  最后修改于: 2023-12-03 15:15:07.692000             🧑  作者: Mango
Flutter Slider是一个可以滑动调节数值的轨道控件,用户可以使用手指在滑块上滑动或者点击轨道上的某个点来设置值。这个控件可以用来调节音量、屏幕亮度、进度条等等。
使用Flutter Slider非常简单,只需要创建一个Slider实例,并指定属性即可。以下是一个基本示例:
double _value = 50;
Slider(
value: _value,
onChanged: (value) {
setState(() {
_value = value;
});
},
)
这个示例创建了一个初始值为50的Slider,用户可以通过滑动滑块来改变_value的值。
Flutter Slider提供了很多可配置属性,以下是一部分常用的属性:
value
:当前Slider的值。onChanged
:当Slider的值发生改变时回调的函数。min
:Slider的最小值。max
:Slider的最大值。divisions
:滑道被分割成的份数,设置该属性后,Slider将显示分割线。label
:当前值的提示信息,使用了该属性后,滑块下方将显示一个文本标签。activeColor
:滑道上高亮部分的颜色。inactiveColor
:滑道上非高亮部分的颜色。thumbColor
:滑块的颜色。thumbShape
:滑块的外形。示例代码:
double _value = 50;
Slider(
value: _value,
onChanged: (value) {
setState(() {
_value = value;
});
},
min: 0,
max: 100,
divisions: 10,
label: '${_value.toInt()}',
activeColor: Colors.blue,
inactiveColor: Colors.grey[300],
thumbColor: Colors.blue,
thumbShape: RoundSliderThumbShape(enabledThumbRadius: 12),
)
Flutter Slider的外形是可以自定义的,主要是通过SliderComponentShape
和SliderComponentShape
类来实现。以下是一个自定义滑块形状的示例:
double _value = 50;
SliderTheme(
data: SliderThemeData(
trackHeight: 2,
overlayColor: Colors.grey.withOpacity(0.1),
activeTrackColor: Colors.blue,
inactiveTrackColor: Colors.grey[300],
thumbShape: CustomSliderThumbShape(),
),
child: Slider(
value: _value,
onChanged: (value) {
setState(() {
_value = value;
});
},
min: 0,
max: 100,
),
);
// 自定义滑块形状
class CustomSliderThumbShape extends SliderComponentShape {
@override
Size getPreferredSize(bool isEnabled, bool isDiscrete) {
return Size.fromRadius(12);
}
@override
void paint(PaintingContext context, Offset center,
{required Animation<double> activationAnimation,
required Animation<double> enableAnimation,
required bool isDiscrete,
required TextPainter labelPainter,
required RenderBox parentBox,
required SliderThemeData sliderTheme,
required TextDirection textDirection,
required double value}) {
final canvas = context.canvas;
final radius = 12.0;
final path = Path()
..moveTo(center.dx + radius, center.dy)
..lineTo(center.dx - radius, center.dy - radius)
..lineTo(center.dx - radius, center.dy + radius)
..close();
final paint = Paint()
..color = sliderTheme.activeTrackColor!
..style = PaintingStyle.fill;
canvas.drawPath(path, paint);
}
}
在这个示例中,我们自定义了滑块的形状,将滑块变成了一个三角形。自定义Slider外形需要继承SliderComponentShape
类并实现getPreferredSize
和paint
方法。在paint
方法中绘制自己定义的形状即可。
Flutter Slider是一个非常实用的轨道控件,可用于各种不同的场景。本文介绍了Slider的基本用法和一些常用属性,还演示了如何自定义Slider的外形。如果您需要在Flutter应用程序中调整数值,别忘了尝试Slider控件。