Flutter圆形滑块插件reactive_sleek_circular_slider的使用

发布于 1周前 作者 caililin 来自 Flutter

Flutter圆形滑块插件reactive_sleek_circular_slider的使用

reactive_sleek_circular_slider 是一个围绕 sleek_circular_slider 的包装器,用于与 reactive_forms 一起使用。它允许你创建一个响应式的圆形滑块,并将其值绑定到 ReactiveForms 表单控件中。

完整示例Demo

以下是一个完整的示例代码,展示了如何在Flutter应用中使用 reactive_sleek_circular_slider 插件。这个示例包含了一个圆形滑块和一个按钮,当点击按钮时,会打印出表单的当前值。

import 'package:flutter/material.dart';
import 'package:reactive_forms/reactive_forms.dart';
import 'package:reactive_sleek_circular_slider/reactive_sleek_circular_slider.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // 构建表单
  FormGroup buildForm() => fb.group({
        'input': FormControl<double>(value: 10), // 初始化滑块的值为10
      });

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: Scaffold(
        body: SafeArea(
          child: SingleChildScrollView(
            physics: const BouncingScrollPhysics(), // 设置滚动效果
            padding: const EdgeInsets.symmetric(
              horizontal: 20.0, // 水平方向的内边距
              vertical: 20.0,  // 垂直方向的内边距
            ),
            child: ReactiveFormBuilder(
              form: buildForm, // 使用buildForm方法构建表单
              builder: (context, form, child) {
                return Column(
                  children: [
                    // 第一个圆形滑块
                    ReactiveSleekCircularSlider<double>(
                      formControlName: 'input', // 绑定到表单控件 'input'
                      min: 5,                   // 最小值为5
                      max: 100,                 // 最大值为100
                      heightFactor: 0.78,       // 高度因子
                      alignment: Alignment.topCenter, // 对齐方式
                      decoration: const InputDecoration(
                        border: OutlineInputBorder(), // 边框样式
                        contentPadding: EdgeInsets.fromLTRB(12, 12, 0, 0), // 内边距
                        labelText: "Search amount", // 标签文本
                        helperText: '', // 辅助文本
                      ),
                    ),
                    
                    // 第二个圆形滑块
                    ReactiveSleekCircularSlider<double>(
                      formControlName: 'input', // 绑定到表单控件 'input'
                      min: 5,                   // 最小值为5
                      max: 100,                 // 最大值为100
                      heightFactor: 0.78,       // 高度因子
                      alignment: Alignment.topCenter, // 对齐方式
                      decoration: const InputDecoration(
                        border: InputBorder.none, // 无边框
                        contentPadding: EdgeInsets.zero, // 内边距为0
                      ),
                    ),
                    
                    const SizedBox(height: 16), // 间距

                    // 提交按钮
                    ElevatedButton(
                      child: const Text('Sign Up'), // 按钮文本
                      onPressed: () {
                        if (form.valid) { // 如果表单有效
                          print(form.value); // 打印表单的值
                        } else {
                          form.markAllAsTouched(); // 标记所有字段为已触摸
                        }
                      },
                    ),
                  ],
                );
              },
            ),
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter中使用reactive_sleek_circular_slider插件的示例代码。这个插件提供了一个美观的圆形滑块,可以方便地集成到你的应用中。

首先,确保你已经在pubspec.yaml文件中添加了reactive_sleek_circular_slider依赖:

dependencies:
  flutter:
    sdk: flutter
  reactive_sleek_circular_slider: ^x.y.z  # 请替换为最新版本号

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

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

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Reactive Sleek Circular Slider Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: SleekCircularSliderDemo(),
    );
  }
}

class SleekCircularSliderDemo extends StatefulWidget {
  @override
  _SleekCircularSliderDemoState createState() => _SleekCircularSliderDemoState();
}

class _SleekCircularSliderDemoState extends State<SleekCircularSliderDemo> {
  double _value = 50.0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Reactive Sleek Circular Slider Demo'),
      ),
      body: Center(
        child: ReactiveSleekCircularSlider(
          minValue: 0,
          maxValue: 100,
          initialValue: _value,
          onChangeStart: (double value) {
            print("Change start: $value");
          },
          onChange: (double value) {
            setState(() {
              _value = value;
            });
            print("Change: $value");
          },
          onChangeEnd: (double value) {
            print("Change end: $value");
          },
          customColors: CustomSliderColors(
            trackColor: Colors.grey[300]!,
            dotColor: Colors.blue,
            progressBarColor: Colors.blueAccent,
          ),
          size: 200.0,
        ),
      ),
      bottomNavigationBar: BottomAppBar(
        child: Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,
          children: <Widget>[
            Text('Current Value: $_value'),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,包含一个ReactiveSleekCircularSlider组件。这个组件允许用户拖动滑块以选择一个介于0到100之间的值。滑块的颜色和样式可以通过customColors参数进行自定义。

关键部分包括:

  1. 依赖安装:确保在pubspec.yaml中添加了reactive_sleek_circular_slider
  2. 状态管理:使用_SleekCircularSliderDemoState中的_value变量来管理滑块的值。
  3. 滑块事件onChangeStartonChangeonChangeEnd回调函数分别在滑块开始拖动、拖动中和拖动结束时被调用。
  4. 自定义颜色:通过CustomSliderColors来自定义滑块的颜色。

这个示例展示了如何使用reactive_sleek_circular_slider插件的基本功能。你可以根据需要进一步自定义和扩展这个示例。

回到顶部