Flutter可滑动切换开关插件swipable_toggle_switch的使用
Flutter可滑动切换开关插件swipable_toggle_switch的使用
Swipable Toggle Switch 是一个提供了带有值的可滑动切换按钮的包。它为你的滑动切换体验提供了平滑的滑动手感,并且你可以根据需要自定义背景颜色和切换颜色。
完整示例Demo
import 'package:flutter/material.dart';
import 'package:swipable_toggle_switch/swipable_toggle_switch.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 这个widget是你的应用的根组件。
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.pink, // 设置背景颜色为粉色
body: SafeArea(
child: Column(
children: [
Expanded(
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 第一个SwipableToggleSwitch
SwipableToggleSwitch(
values: const ["°C", "°F"], // 可选值
width: 350, // 按钮宽度
onToggleCallback: (value) {}, // 切换时的回调函数
buttonColor: const Color(0xFF0A3157), // 按钮颜色
backgroundColor: const Color(0xFFB5C1CC), // 背景颜色
textColor: const Color(0xFFFFFFFF), // 文字颜色
),
const SizedBox(height: 20,), // 添加间距
// 第二个SwipableToggleSwitch
SwipableToggleSwitch(
values: const ["Male", "Female"], // 可选值
width: 650, // 按钮宽度
onToggleCallback: (value) {}, // 切换时的回调函数
boxShape: BoxShape.rectangle, // 按钮形状
buttonColor: const Color(0xFF0A3157), // 按钮颜色
backgroundColor: const Color(0xFFB5C1CC), // 背景颜色
textColor: const Color(0xFFFFFFFF), // 文字颜色
),
const SizedBox(height: 20,), // 添加间距
// 第三个SwipableToggleSwitch
SwipableToggleSwitch(
values: const ["ON", "OFF"], // 可选值
width: 650, // 按钮宽度
onToggleCallback: (value) {}, // 切换时的回调函数
boxShape: BoxShape.rectangle, // 按钮形状
buttonColor: const Color(0xFF0A3157), // 按钮颜色
backgroundColor: const Color(0xFFB5C1CC), // 背景颜色
textColor: const Color(0xFFFFFFFF), // 文字颜色
),
],
),
)
)
],
),
),
);
}
}
代码解释
-
导入依赖:
import 'package:flutter/material.dart'; import 'package:swipable_toggle_switch/swipable_toggle_switch.dart';
-
主应用类:
class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: const MyHomePage(title: 'Flutter Demo Home Page'), ); } }
- 创建了一个基本的MaterialApp,设置了主题和主页。
-
主页类:
class MyHomePage extends StatefulWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; @override State<MyHomePage> createState() => _MyHomePageState(); }
- 创建了一个状态管理的主页。
-
状态类:
class _MyHomePageState extends State<MyHomePage> { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.pink, body: SafeArea( child: Column( children: [ Expanded( child: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ SwipableToggleSwitch( values: const ["°C", "°F"], width: 350, onToggleCallback: (value) {}, buttonColor: const Color(0xFF0A3157), backgroundColor: const Color(0xFFB5C1CC), textColor: const Color(0xFFFFFFFF), ), const SizedBox(height: 20,), SwipableToggleSwitch( values: const ["Male", "Female"], width: 650, onToggleCallback: (value) {}, boxShape: BoxShape.rectangle, buttonColor: const Color(0xFF0A3157), backgroundColor: const Color(0xFFB5C1CC), textColor: const Color(0xFFFFFFFF), ), const SizedBox(height: 20,), SwipableToggleSwitch( values: const ["ON", "OFF"], width: 650, onToggleCallback: (value) {}, boxShape: BoxShape.rectangle, buttonColor: const Color(0xFF0A3157), backgroundColor: const Color(0xFFB5C1CC), textColor: const Color(0xFFFFFFFF), ), ], ), ) ) ], ), ), ); } }
更多关于Flutter可滑动切换开关插件swipable_toggle_switch的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter可滑动切换开关插件swipable_toggle_switch的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter中使用swipable_toggle_switch
插件的详细代码示例。首先,你需要确保在pubspec.yaml
文件中添加该插件的依赖项:
dependencies:
flutter:
sdk: flutter
swipable_toggle_switch: ^latest_version # 请确保替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖项。
接下来,在你的Flutter项目中,你可以使用SwipableToggleSwitch
组件。以下是一个完整的示例代码,展示了如何使用该插件:
import 'package:flutter/material.dart';
import 'package:swipable_toggle_switch/swipable_toggle_switch.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Swipable Toggle Switch Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: Scaffold(
appBar: AppBar(
title: Text('Swipable Toggle Switch Demo'),
),
body: Center(
child: MySwipableToggleSwitchWidget(),
),
),
);
}
}
class MySwipableToggleSwitchWidget extends StatefulWidget {
@override
_MySwipableToggleSwitchWidgetState createState() => _MySwipableToggleSwitchWidgetState();
}
class _MySwipableToggleSwitchWidgetState extends State<MySwipableToggleSwitchWidget> {
bool isSwitched = false;
void onToggleChanged(bool value) {
setState(() {
isSwitched = value;
});
}
@override
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'Swipable Toggle Switch:',
style: TextStyle(fontSize: 20),
),
SizedBox(height: 20),
SwipableToggleSwitch(
value: isSwitched,
onToggleChanged: onToggleChanged,
toggleWidth: 100,
toggleHeight: 50,
toggleColor: isSwitched ? Colors.green : Colors.red,
thumbColor: Colors.white,
animationDuration: Duration(milliseconds: 300),
),
SizedBox(height: 20),
Text(
'Switch is: ${isSwitched ? 'ON' : 'OFF'}',
style: TextStyle(fontSize: 20),
),
],
);
}
}
解释
- 依赖项:在
pubspec.yaml
文件中添加swipable_toggle_switch
依赖项。 - 导入包:在Dart文件中导入
swipable_toggle_switch
包。 - 主应用:
MyApp
类是一个简单的Flutter应用,包含一个Scaffold
,其中包含一个AppBar
和一个居中的MySwipableToggleSwitchWidget
。 - 状态管理:
MySwipableToggleSwitchWidget
是一个有状态的widget,它管理开关的状态。 - 开关回调:
onToggleChanged
方法更新开关的状态。 - UI布局:使用
Column
布局,包含一个文本标签、SwipableToggleSwitch
组件和一个显示当前开关状态的文本。
自定义
toggleWidth
和toggleHeight
可以调整开关的宽度和高度。toggleColor
和thumbColor
可以分别设置开关的背景色和拇指(滑块)的颜色。animationDuration
可以设置滑动动画的持续时间。
希望这个示例能帮助你更好地理解和使用swipable_toggle_switch
插件!