Flutter 滑块

17 Mar 2025 | 6 分钟阅读

在Flutter中,滑块是一个Material Design的widget,用于选择一个范围的值。它是一个输入widget,我们可以通过拖动或按下所需位置来设置一系列值。在本文中,我们将展示如何在Flutter中使用滑块widget来设置值的范围,以及如何自定义滑块的外观。

通常,我们使用滑块widget来改变一个值。因此,需要将该值存储在一个变量中。这个widget有一个滑块类,它需要onChanged()函数。每当我们改变滑块的位置时,就会调用这个函数。

滑块可以用于从连续或离散的一组值中选择一个值。默认情况下,它使用一个连续的值范围。如果我们想使用离散的值,我们必须为divisions使用一个非空值。这个离散的划分表示离散间隔的数量。在获取值之前,我们必须设置最小值最大值。滑块提供min和max参数来设置最小和最大的限制。例如,我们有一组从0.0到50.0的值,divisions是10,那么滑块将取值为0.0, 10.0, 20.0, 30.0, 40.0, 和 50.0。

滑块属性

以下是在Flutter中使用的滑块属性。它有两个必需的参数,所有其他的都是可选的。

属性类型描述
double这是一个必需的参数,用于指定滑块的当前值。
onChangeddouble这是一个必需的参数,在用户为滑块选择一个新值时,在拖动期间调用。如果它为null,则滑块被禁用。
onChangedStartdouble这是一个可选的参数,当我们开始选择一个新值时被调用。
onChangedStartdouble这是一个可选的参数,当我们在为滑块选择一个新值时完成时被调用。
maxdouble这是一个可选的参数,它决定了用户可以使用的最大值。默认情况下,它是1.0。它应该大于或等于min。
mindouble这是一个可选的参数,它决定了用户可以使用的最小值。默认情况下,它是0.0。它应该小于或等于max。
divisionsint它决定了离散划分的数量。如果它为null,则滑块是连续的。
labelstring它指定将显示在滑块上方的文本标签。它显示了离散滑块的值。
activeColorclass Color它决定了滑块轨道活动部分的颜色。
inactiveColorclass Color它决定了滑块轨道非活动部分的颜色。
SemanticFormatterCallback这是一个回调,用于创建一个语义值。默认情况下,它是一个百分比。

Flutter中的滑块使用以下术语

Thumb:这是一个圆形,当我们通过拖动改变值时,它会水平滑动。

Track:这是一条水平线,我们可以在上面滑动Thumb。

Overlay:在拖动时,它出现在Thumb周围。

Tick marks:它用于标记滑块的离散值。

Value indicators:当我们定义标签时,它将显示Thumb值的标签。

Active:它是滑块的活动侧,位于Thumb和最小值之间。

Inactive:它是滑块的非活动侧,位于Thumb和最大值之间。

如何在Flutter中使用滑块widget?

以下是在Flutter中使用滑块widget的基本示例。

示例

让我们通过一个例子来了解如何在Flutter中使用滑块。在下面的代码中,我们将该值存储为整数,当它作为value参数传递时,必须先转换为double,然后在onChanged方法中四舍五入为整数。我们还将滑块的活动部分指定为绿色,而非活动部分指定为橙色

输出

当我们在IDE中运行这个应用程序时,我们应该得到类似于下面的屏幕截图的UI。在这里,我们可以拖动滑块来设置音量标签。

Flutter Slider

Flutter范围滑块

它是一个高度可定制的组件,用于从一系列值中选择一个值。它可以从连续或离散的一组值中选择。

为什么使用范围滑块?

基于连续或离散的值集,滑块组件可以提供单选或多选。在这里,我们必须预先确定最小值或最大值来调整一个方向的选择。与滑块不同,范围滑块允许两个选择点,从而提供灵活的调整来设置最大值和最小值。当我们要控制一个特定范围时,比如指示时间长度或价格点时,这种调整使其成为一个有用的特性。

请看下面的代码,范围值是10的间隔,因为我们将滑块从0到100分成了10个部分。这意味着我们的值在0, 10, 20, 30, 40, 等等,一直到100之间。这里,我们将用20和50来初始化范围值。

输出

当我们在IDE中运行这个应用程序时,我们应该得到类似于下面的屏幕截图的UI。

Flutter Slider

当我们拖动滑块时,我们可以看到值的范围来设置音量标签。

Flutter Slider

Flutter图片滑块

图片滑块是一种在我们的应用程序中显示图片、视频或图形的便捷方式。通常,它会在我们的应用程序屏幕上一次显示一张大图片。它有助于使我们的屏幕对用户更具吸引力。

让我们看看如何在Flutter中创建一个图片滑块。在Flutter库中有许多依赖关系可以用来在你的应用程序中创建一个滑动图像。这里,我们将使用flutter_swiper依赖。因此,首先,我们需要在puspec.yaml文件中添加下面的依赖关系

接下来,像下面这样在你的dart文件中添加这个依赖关系

示例

下面的代码简单地解释了flutter_swiper库的使用。在这里,我们从网络上获取了一张图片,显示在屏幕上。

输出

当我们在IDE中运行这个应用程序时,我们应该得到类似于下面的屏幕截图的UI。在这里,图片会自动滑动

Flutter Slider
下一个主题Flutter开关