Flutter滑动按钮组件插件slide_button的使用

Flutter滑动按钮组件插件slide_button的使用

概述

滑动按钮组件插件 slide_button 是一个基于多种设备的“滑动解锁”功能的 Flutter 小部件。它高度可定制且灵活。

滑动按钮示例

安装

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

dependencies:
  slide_button: ^0.2.8

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

使用

以下是使用 slide_button 的步骤:

  1. 添加依赖。
  2. 在任何地方使用 SlideButton 小部件。
  3. 配置所需属性。
  4. 实现滑动逻辑。

示例代码

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

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

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

class _MyAppState extends State<MyApp> {
  // 控制器用于动态更新文本
  TextEditingController textController1 = TextEditingController();
  TextEditingController textController2 = TextEditingController();

  [@override](/user/override)
  void initState() {
    super.initState();
    // 监听控制器变化
    textController2.addListener(() {
      setState(() {});
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('滑动按钮示例'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.spaceBetween,
          children: <Widget>[
            // 显示滑动状态的文本
            Container(
              height: 64,
              width: double.infinity,
              color: Colors.grey,
              child: Center(
                child: Column(
                  children: <Widget>[
                    Text("滑动状态: ${textController1.text}"),
                    Text("滑动值: ${textController2.text}"),
                  ],
                ),
              ),
            ),
            // 第一个滑动按钮
            SlideButton(
              height: 64, // 设置高度
              backgroundChild: Center( // 背景内容
                child: Text("滑动解锁"),
              ),
              backgroundColor: Colors.amber, // 背景颜色
              slidingBarColor: Colors.blue, // 滑动条颜色
              slideDirection: SlideDirection.RIGHT, // 滑动方向
              onButtonOpened: () { // 滑动完成回调
                textController1.text = "已解锁";
              },
              onButtonClosed: () { // 回到初始位置回调
                textController1.text = "已锁定";
              },
              onButtonSlide: (value) { // 动态滑动回调
                textController2.text = value.toString();
              },
            ),
            // 第二个滑动按钮
            SlideButton(
              height: 64,
              borderRadius: 0.0, // 边框圆角
              backgroundColor: Colors.transparent, // 背景透明
              slidingChild: Center( // 滑动条内容
                child: Text("滑动解锁"),
              ),
              slidingBarColor: Colors.blue, // 滑动条颜色
              slideDirection: SlideDirection.LEFT, // 滑动方向
            ),
            // 第三个滑动按钮
            SlideButton(
              height: 64,
              slidingChild: Align( // 自定义滑动条内容
                alignment: Alignment.centerRight,
                child: Container(
                  margin: EdgeInsets.symmetric(horizontal: 16),
                  child: Icon(Icons.chevron_right), // 图标
                ),
              ),
              backgroundColor: Colors.amber, // 背景颜色
              slidingBarColor: Colors.blue, // 滑动条颜色
              slideDirection: SlideDirection.RIGHT, // 滑动方向
            ),
            // 扩展滑动按钮
            SizedBox(
              height: 300,
              child: SlideButton(
                backgroundColor: Colors.amber, // 背景颜色
                backgroundChild: Center( // 背景内容
                  child: Text("我可以扩展!"),
                ),
                slidingBarColor: Colors.blue, // 滑动条颜色
                slideDirection: SlideDirection.LEFT, // 滑动方向
              ),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


slide_button 是一个用于 Flutter 的滑动按钮组件插件,允许用户通过滑动手势来触发操作。它常用于确认、删除、提交等需要用户明确意图的场景。以下是如何在 Flutter 项目中使用 slide_button 插件的步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  slide_button: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 基本使用

在 Dart 文件中导入 slide_button 插件,并在你的 UI 中使用 SlideButton 组件。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Slide Button Example')),
        body: Center(
          child: SlideButton(
            child: Text('Slide to Confirm'),
            backgroundColor: Colors.blue,
            slidingChild: Text('Sliding...'),
            onConfirmed: () {
              print('Confirmed!');
            },
          ),
        ),
      ),
    );
  }
}

3. 自定义属性

SlideButton 提供了多种属性来自定义按钮的外观和行为。以下是一些常用的属性:

  • child: 按钮未滑动时显示的子组件。
  • slidingChild: 按钮滑动时显示的子组件。
  • backgroundColor: 按钮的背景颜色。
  • onConfirmed: 当用户滑动完成时触发的回调函数。
  • height: 按钮的高度。
  • borderRadius: 按钮的圆角半径。
  • elevation: 按钮的阴影高度。
  • slidingBarColor: 滑动条的颜色。
  • slidingBarHeight: 滑动条的高度。

4. 示例代码

以下是一个更复杂的示例,展示了如何使用多个 SlideButton 组件以及自定义属性:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Slide Button Example')),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            SlideButton(
              child: Text('Slide to Confirm'),
              backgroundColor: Colors.blue,
              slidingChild: Text('Sliding...'),
              onConfirmed: () {
                print('Confirmed!');
              },
            ),
            SizedBox(height: 20),
            SlideButton(
              child: Text('Slide to Delete'),
              backgroundColor: Colors.red,
              slidingChild: Text('Deleting...'),
              onConfirmed: () {
                print('Deleted!');
              },
              height: 60,
              borderRadius: 30,
              slidingBarColor: Colors.white,
              slidingBarHeight: 50,
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部