Flutter开关切换动画插件rolling_switch的使用

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

Flutter开关切换动画插件rolling_switch的使用

Rolling Switch Package

rolling_switch 是一个为Flutter应用程序提供的全自定义滚动开关小部件。它源自于lite_rolling_switch库,具有吸引人的动画效果,并允许您自定义颜色、图标、自定义小部件和其他外观内容。您可以像管理经典材料设计的开关小部件一样管理此小部件的状态。

快速开始

在您的项目中导入此库:

dependencies:
  rolling_switch: ^latest_version

请将 ^latest_version 替换为实际的最新版本号。

基本实现

使用图标构造函数

以下是创建带有图标的 RollingSwitch 小部件的基本用法:

RollingSwitch.icon(
  onChanged: (bool state) {
    print('turned ${(state) ? 'on' : 'off'}');
  },
  rollingInfoRight: const RollingIconInfo(
    icon: Icons.flag,
    text: Text('Flag'),
  ),
  rollingInfoLeft: const RollingIconInfo(
    icon: Icons.check,
    backgroundColor: Colors.grey,
    text: Text('Check'),
  ),
),

更多可能性

  • 创建自定义小部件
const RollingWidgetInfo(icon: FlutterLogo())
  • 更改左右滑动时的背景颜色
RollingSwitch.icon(    
  rollingInfoRight: const RollingIconInfo(
    backgroundColor: Colors.green,
  ),
  rollingInfoLeft: const RollingIconInfo(
    backgroundColor: Colors.grey,
  ),
)
  • 更改圆形指示器的颜色
RollingSwitch.icon(
  ...
  circularColor: Colors.blue, // 设置圆形指示器的颜色
)
  • 创建自定义文本指示器
RollingSwitch.icon(    
  rollingInfoRight: const RollingIconInfo(
    text: Text('Flag'),
  ),
  rollingInfoLeft: const RollingIconInfo(
    text: Text('Stack'),
  ),
)
  • 启用拖拽切换
RollingSwitch.icon(
  ...
  enableDrag: true
)

预览

预览

完整示例代码

以下是一个完整的示例,展示了如何在一个简单的Flutter应用程序中使用 RollingSwitch

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Rolling Switch Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Rolling Switch Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _switchValue = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            RollingSwitch.icon(
              value: _switchValue,
              onChanged: (bool state) {
                setState(() {
                  _switchValue = state;
                });
                print('turned ${(state) ? 'on' : 'off'}');
              },
              rollingInfoRight: const RollingIconInfo(
                icon: Icons.flag,
                text: Text('Flag'),
              ),
              rollingInfoLeft: const RollingIconInfo(
                icon: Icons.check,
                backgroundColor: Colors.grey,
                text: Text('Check'),
              ),
            ),
            SizedBox(height: 20),
            RollingSwitch.widget(
              value: _switchValue,
              onChanged: (bool state) {
                setState(() {
                  _switchValue = state;
                });
                print('turned ${(state) ? 'on' : 'off'}');
              },
              rollingInfoRight: RollingWidgetInfo(
                icon: FlutterLogo(),
                text: Text('Flutter'),
              ),
              rollingInfoLeft: RollingWidgetInfo(
                icon: FlutterLogo(
                  style: FlutterLogoStyle.stacked,
                ),
                backgroundColor: Colors.grey,
                text: Text('Stacked'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

这个示例代码展示了如何在Flutter应用程序中使用 RollingSwitch 插件来创建带有图标和自定义小部件的开关,并处理其状态变化。希望这对您有所帮助!


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

1 回复

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


当然,以下是如何在Flutter项目中使用rolling_switch插件来实现开关切换动画的示例代码。rolling_switch是一个提供滚动动画效果的开关组件插件。

首先,确保你的Flutter项目中已经包含了rolling_switch插件。如果还没有添加,可以在pubspec.yaml文件中添加以下依赖:

dependencies:
  flutter:
    sdk: flutter
  rolling_switch: ^latest_version  # 请将latest_version替换为当前最新版本号

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

接下来是一个简单的示例代码,展示了如何在Flutter应用中使用rolling_switch

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Rolling Switch Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool isSwitched = false;

  void handleSwitchChange(bool value) {
    setState(() {
      isSwitched = value;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Rolling Switch Demo'),
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(16.0),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Switch is: ${isSwitched ? "ON" : "OFF"}',
                style: TextStyle(fontSize: 24),
              ),
              SizedBox(height: 20),
              RollingSwitch(
                value: isSwitched,
                onChanged: handleSwitchChange,
                activeColor: Colors.blue,
                inactiveColor: Colors.grey,
                width: 50,
                height: 25,
                thumbRadius: 12,
                animationDuration: Duration(milliseconds: 300),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

代码说明

  1. 导入依赖

    • import 'package:flutter/material.dart';
    • import 'package:rolling_switch/rolling_switch.dart';
  2. 应用入口

    • MyApp类为应用的根组件,包含了应用的主题和主页MyHomePage
  3. 主页

    • MyHomePage是一个有状态的组件,包含一个布尔值isSwitched来跟踪开关的状态。
    • handleSwitchChange方法用于处理开关状态变化。
  4. UI布局

    • 使用Scaffold组件来构建页面,包含一个AppBar和页面的主体内容。
    • 主体内容使用CenterPadding来居中显示,包含一个Text组件来显示开关的状态,以及一个RollingSwitch组件。
  5. RollingSwitch属性

    • value:当前开关的状态。
    • onChanged:开关状态变化时的回调函数。
    • activeColor:开关激活时的颜色。
    • inactiveColor:开关未激活时的颜色。
    • widthheight:开关的宽度和高度。
    • thumbRadius:开关按钮的半径。
    • animationDuration:动画持续时间。

运行这段代码,你应该能够在Flutter应用中看到一个带有滚动动画效果的开关组件。

回到顶部