Flutter倒计时按钮功能插件duration_button的使用
Flutter Duration Button
Duration Button
是一个类似于 Netflix 的“跳过介绍”按钮的自动点击按钮。它提供了四种类型的按钮:
DurationButton
:普通的持续时间按钮IconDurationButton
:基于图标的持续时间按钮TextDurationButton
:基于文本的持续时间按钮OutlinedDurationButton
:带边框的持续时间按钮
开始使用
依赖安装
可以通过以下命令添加 duration_button
到你的项目中:
$ flutter pub add duration_button
或者在你的 pubspec.yaml
文件中添加以下依赖:
dependencies:
duration_button: ^1.0.0
然后运行 flutter pub get
来安装依赖。
导入包
在你的 Dart 文件中导入 duration_button
包:
import 'package:duration_button/duration_button.dart';
使用组件
你可以使用以下几种类型的按钮:
DurationButton(/* Props here.. */)
IconDurationButton(/* Props here.. */)
OutlinedDurationButton(/* Props here.. */)
TextDurationButton(/* Props here.. */)
属性
属性 | 类型 | 默认值 | 描述 |
---|---|---|---|
duration | Duration |
required | 按钮的持续时间值。 |
width | double? |
null |
按钮的宽度值。 |
height | double? |
null |
按钮的高度值。 |
child | Widget? |
null |
按钮的子组件。 |
coverChild | bool? |
false |
是否覆盖子组件。 |
borderRadius | BorderRadius |
null |
按钮的圆角值。 |
onPressed | VoidCallback |
required | 按钮被点击时调用的回调函数。如果 onComplete 为 null ,则在完成时调用 onPressed 。 |
onComplete | VoidCallback? |
null |
按钮完全覆盖时调用的回调函数。 |
coverColor | Color? |
Colors.black.withOpacity(0.2) |
覆盖层的颜色值。 |
backgroundColor | Color? |
Theme Primary Color | 按钮的背景颜色值。 |
hoverColor | Color? |
null |
鼠标悬停时的效果颜色。 |
splashColor | Color? |
null |
点击效果的颜色。 |
splashFactory | InteractiveInkFeatureFactory? |
null |
按钮的点击效果工厂。 |
border | Border? |
null |
按钮的边框值。 |
其他组件的属性可以在 文档 中找到。
示例
DurationButton
DurationButton(
duration: const Duration(seconds: 3),
onPressed: () {},
backgroundColor: Colors.yellow,
splashFactory: NoSplash.splashFactory,
onComplete: () => ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text("onCompleteCalled!"))),
child: const Text("Duration Button"),
),
IconDurationButton
IconDurationButton(
Icons.favorite,
size: 30,
iconColor: Colors.pink,
onPressed: () {},
duration: const Duration(seconds: 2),
),
TextDurationButton
TextDurationButton(
width: 150,
height: 50,
duration: const Duration(seconds: 7),
text: const Text('Text Duration Button'),
onPressed: () {},
),
OutlinedDurationButton
String _skipIntro = 'Skip Intro';
OutlinedDurationButton(
child: Text(_skipIntro),
onPressed: () {},
onComplete: () => setState(() => _skipIntro = 'Intro Skipped'),
duration: const Duration(seconds: 3),
),
完整示例
以下是一个完整的示例,展示了如何在 Flutter 应用中使用 duration_button
插件:
import 'package:duration_button/duration_button.dart';
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<StatefulWidget> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _skipIntro = 'Skip Intro';
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Duration Button Example',
home: Scaffold(
appBar: AppBar(
title: const Text('Duration Button Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
DurationButton(
duration: const Duration(seconds: 3),
onPressed: () {},
child: const Text("Duration Button"),
),
TextDurationButton(
duration: const Duration(seconds: 7),
text: const Text('Text Duration Button'),
onPressed: () {},
),
IconDurationButton(
Icons.favorite,
iconColor: Colors.pink,
onPressed: () {},
duration: const Duration(seconds: 2),
),
OutlinedDurationButton(
child: Text(_skipIntro),
onPressed: () {},
onComplete: () => setState(() => _skipIntro = 'Intro Skipped'),
duration: const Duration(seconds: 3),
)
],
),
),
),
);
}
}
希望这个示例对你有帮助!如果你有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter倒计时按钮功能插件duration_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter倒计时按钮功能插件duration_button的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用duration_button
插件来实现倒计时按钮功能的代码案例。假设你已经在pubspec.yaml
文件中添加了duration_button
依赖,并运行了flutter pub get
。
1. 添加依赖
首先,确保你的pubspec.yaml
文件中包含以下依赖:
dependencies:
flutter:
sdk: flutter
duration_button: ^最新版本号 # 替换为实际的最新版本号
2. 导入插件
在你的Dart文件中(例如main.dart
),导入duration_button
插件:
import 'package:flutter/material.dart';
import 'package:duration_button/duration_button.dart';
3. 实现倒计时按钮功能
下面是一个完整的Flutter应用示例,展示了如何使用DurationButton
来实现倒计时按钮功能:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
DurationButtonController? _controller;
@override
void initState() {
super.initState();
_controller = DurationButtonController(
duration: 60, // 倒计时时间,单位为秒
onFinish: () {
// 倒计时结束时触发的回调
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('倒计时结束!')),
);
},
);
}
@override
void dispose() {
_controller?.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('倒计时按钮示例'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
DurationButton(
controller: _controller!,
width: 200,
height: 50,
textStyle: TextStyle(fontSize: 20, color: Colors.white),
backgroundColor: Colors.blue,
initialText: '开始倒计时',
activeText: '${_controller!.remainingTime()}秒',
disabledText: '已结束',
onPressed: () {
if (_controller!.isRunning) {
_controller!.reset(); // 如果已经在倒计时,则重置
} else {
_controller!.start(); // 否则开始倒计时
}
},
),
],
),
),
);
}
}
4. 运行应用
保存上述代码并运行你的Flutter应用。你应该会看到一个按钮,点击它后会开始60秒的倒计时,并在倒计时结束后显示一条SnackBar消息。
这个示例展示了如何使用duration_button
插件来创建一个基本的倒计时按钮,包括初始化倒计时控制器、处理倒计时结束时的回调、以及重置和启动倒计时等功能。你可以根据需要进一步自定义按钮的样式和行为。