Flutter滑动组件插件flutter_fluid_slider的使用

Flutter滑动组件插件flutter_fluid_slider的使用

flutter_fluid_slider 是一个灵感来源于 Dribbble 上 Virgil Pana 的设计的滑动组件。它是一个具有流体动画效果的滑块组件,可以像 Material Design 的 Slider 组件一样使用。

安装

在你的项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  flutter_fluid_slider: ^1.0.2

然后运行 flutter pub get 来安装该包。

基本用法

在你的 Widget 树中插入 FluidSlider 组件。

FluidSlider(
  value: _value, // 当前选中的值
  onChanged: (double newValue) { // 滑块值改变时的回调
    setState(() {
      _value = newValue;
    });
  },
  min: 0.0, // 最小值
  max: 100.0, // 最大值
),

属性说明

以下是 FluidSlider 的主要属性及其描述:

必填属性

  • value: 当前选中的值,滑块的拇指会根据此值绘制。
  • onChanged: 在用户拖动滑块时调用,传递新的值。

可选属性

  • min: 用户可选择的最小值,默认为 0.0。必须小于或等于 max
  • max: 用户可选择的最大值,默认为 1.0。必须大于或等于 min
  • start: 显示在滑块最小值位置的 Widget,默认显示 min 的文本。
  • end: 显示在滑块最大值位置的 Widget,默认显示 max 的文本。
  • onChangeStart: 用户开始拖动滑块时调用,传递旧值。
  • onChangeEnd: 用户结束拖动滑块时调用。
  • labelsTextStyle: 滑块上显示的最小值和最大值文本样式。如果未提供,则应用祖先主题的 accentTextTheme
  • valueTextStyle: 滑块上显示的当前值文本样式。如果未提供,则应用祖先主题的 textTheme.title 并设置为加粗。
  • sliderColor: 滑块的颜色。如果未提供,则应用祖先主题的 primaryColor
  • thumbColor: 滑块拇指的颜色。如果未提供,则默认为 Colors.white
  • thumbDiameter: 滑块拇指的直径,默认为 60.0
  • showDecimalValue: 是否显示滑块值的小数部分,默认为 false
  • mapValueToString: 将滑块值映射为字符串。例如,将数字转换为罗马数字:
FluidSlider(
  value: _val,
  min: 1.0,
  max: 5.0,
  onChanged: () {},
  mapValueToString: (double value) {
    List<String> romanNumerals = ['I', 'II', 'III', 'IV', 'V'];
    return romanNumerals[value.toInt() - 1];
  },
)

示例代码

以下是一个完整的示例代码,展示了如何使用 flutter_fluid_slider 插件。

import 'package:flutter/material.dart';
import 'package:flutter_fluid_slider/flutter_fluid_slider.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  [@override](/user/override)
  HomePageState createState() {
    return new HomePageState();
  }
}

class HomePageState extends State<HomePage> {
  double _value1 = 0.0; // 第一个滑块的值
  double _value2 = 10.0; // 第二个滑块的值
  double _value3 = 1.0; // 第三个滑块的值

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.all(30.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            // 第一个滑块
            FluidSlider(
              value: _value1,
              onChanged: (double newValue) {
                setState(() {
                  _value1 = newValue;
                });
              },
              min: 0.0,
              max: 100.0,
            ),
            SizedBox(height: 100.0), // 空白间距

            // 第二个滑块,自定义颜色和图标
            FluidSlider(
              value: _value2,
              onChanged: (double newValue) {
                setState(() {
                  _value2 = newValue;
                });
              },
              min: 0.0,
              max: 500.0,
              sliderColor: Colors.redAccent, // 滑块颜色
              thumbColor: Colors.amber, // 拇指颜色
              start: Icon(Icons.money_off, color: Colors.white), // 最小值图标
              end: Icon(Icons.attach_money, color: Colors.white), // 最大值图标
            ),
            SizedBox(height: 100.0),

            // 第三个滑块,使用罗马数字映射
            FluidSlider(
              value: _value3,
              sliderColor: Colors.purple,
              onChanged: (double newValue) {
                setState(() {
                  _value3 = newValue;
                });
              },
              min: 1.0,
              max: 5.0,
              mapValueToString: (double value) {
                List<String> romanNumerals = ['I', 'II', 'III', 'IV', 'V'];
                return romanNumerals[value.toInt() - 1];
              },
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter滑动组件插件flutter_fluid_slider的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter滑动组件插件flutter_fluid_slider的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_fluid_slider 是一个 Flutter 插件,用于创建一个流畅的、可自定义的滑动条。它提供了比默认的 Slider 组件更丰富的视觉效果和交互体验。以下是如何使用 flutter_fluid_slider 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_fluid_slider 依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_fluid_slider: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 导入包

在你的 Dart 文件中导入 flutter_fluid_slider 包:

import 'package:flutter_fluid_slider/flutter_fluid_slider.dart';

3. 使用 FluidSlider

FluidSlider 是一个可自定义的滑动条组件。以下是一个简单的示例:

import 'package:flutter/material.dart';
import 'package:flutter_fluid_slider/flutter_fluid_slider.dart';

class FluidSliderExample extends StatefulWidget {
  [@override](/user/override)
  _FluidSliderExampleState createState() => _FluidSliderExampleState();
}

class _FluidSliderExampleState extends State<FluidSliderExample> {
  double _value = 50.0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fluid Slider Example'),
      ),
      body: Center(
        child: FluidSlider(
          value: _value,
          min: 0.0,
          max: 100.0,
          onChanged: (double newValue) {
            setState(() {
              _value = newValue;
            });
          },
          sliderColor: Colors.blue,
          thumbColor: Colors.blueAccent,
          thumbRadius: 10.0,
          trackHeight: 8.0,
          fontSize: 16.0,
          label: 'Value',
          showDecimalValue: false,
        ),
      ),
    );
  }
}

void main() => runApp(MaterialApp(
  home: FluidSliderExample(),
));

4. 自定义 FluidSlider

FluidSlider 提供了多个属性来自定义滑动条的外观和行为:

  • value: 当前的值。
  • min: 最小值。
  • max: 最大值。
  • onChanged: 当值改变时的回调函数。
  • sliderColor: 滑动条的颜色。
  • thumbColor: 滑块的颜色。
  • thumbRadius: 滑块的半径。
  • trackHeight: 滑动条的高度。
  • fontSize: 显示值的字体大小。
  • label: 滑动条的标签。
  • showDecimalValue: 是否显示小数部分。

5. 运行应用

运行你的 Flutter 应用,你应该会看到一个流畅的滑动条,用户可以通过滑动来改变值。

6. 进一步自定义

你可以根据需要进一步自定义 FluidSlider 的外观和行为。例如,你可以通过 sliderColorthumbColor 来改变颜色,或者通过 thumbRadiustrackHeight 来调整滑块和滑动条的大小。

7. 处理值的变化

onChanged 回调函数会在用户滑动滑块时触发,你可以在其中更新状态或执行其他操作。

onChanged: (double newValue) {
  setState(() {
    _value = newValue;
  });
  // 你可以在这里执行其他操作,例如保存值或触发其他事件
}

8. 其他功能

FluidSlider 还支持其他功能,例如显示小数部分、自定义标签等。你可以根据需求进行调整。

9. 示例代码

以下是一个完整的示例代码,展示了如何使用 FluidSlider

import 'package:flutter/material.dart';
import 'package:flutter_fluid_slider/flutter_fluid_slider.dart';

class FluidSliderExample extends StatefulWidget {
  [@override](/user/override)
  _FluidSliderExampleState createState() => _FluidSliderExampleState();
}

class _FluidSliderExampleState extends State<FluidSliderExample> {
  double _value = 50.0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Fluid Slider Example'),
      ),
      body: Center(
        child: FluidSlider(
          value: _value,
          min: 0.0,
          max: 100.0,
          onChanged: (double newValue) {
            setState(() {
              _value = newValue;
            });
          },
          sliderColor: Colors.blue,
          thumbColor: Colors.blueAccent,
          thumbRadius: 10.0,
          trackHeight: 8.0,
          fontSize: 16.0,
          label: 'Value',
          showDecimalValue: false,
        ),
      ),
    );
  }
}

void main() => runApp(MaterialApp(
  home: FluidSliderExample(),
));
回到顶部