Flutter倒计时功能插件flutter_countdown_timer的使用
Flutter倒计时功能插件flutter_countdown_timer
的使用
简介
flutter_countdown_timer
是一个简单的Flutter倒计时小部件,通过结束时间戳进行倒计时,并在倒计时结束后触发事件。
安装步骤
添加依赖
首先,在你的pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_countdown_timer: ^4.1.0
获取包
然后运行以下命令安装包:
$ flutter pub get
属性说明
CountdownTimer属性
名称 | 描述 |
---|---|
endWidget |
倒计时结束时显示的小部件 |
widgetBuilder |
自定义倒计时期间显示的小部件构建器 |
controller |
控制倒计时开始和释放的控制器 |
endTime |
倒计时结束的时间戳(毫秒) |
onEnd |
倒计时结束时触发的事件 |
textStyle |
文本样式 |
CountdownTimerController属性
名称 | 描述 |
---|---|
endTime |
倒计时结束的时间戳(毫秒) |
onEnd |
倒计时结束时触发的事件 |
示例代码
简单示例
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30; // 设置倒计时时间为30秒
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Countdown Timer Example')),
body: Center(
child: CountdownTimer(
endTime: endTime,
),
),
),
);
}
}
结束时执行事件
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
void onEnd() {
print('Countdown ended!');
}
@override
Widget build(BuildContext context) {
int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Countdown Timer with Event')),
body: Center(
child: CountdownTimer(
endTime: endTime,
onEnd: onEnd,
),
),
),
);
}
}
使用控制器提前结束倒计时
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
class CountdownTimerPage extends StatefulWidget {
@override
_CountdownTimerPageState createState() => _CountdownTimerPageState();
}
class _CountdownTimerPageState extends State<CountdownTimerPage> {
CountdownTimerController controller;
int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;
@override
void initState() {
super.initState();
controller = CountdownTimerController(endTime: endTime, onEnd: onEnd);
}
void onEnd() {
print('Countdown ended!');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Controlled Countdown Timer')),
body: Center(
child: CountdownTimer(
controller: controller,
onEnd: onEnd,
endTime: endTime,
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.stop),
onPressed: () {
onEnd();
controller.disposeTimer();
},
),
);
}
@override
void dispose() {
controller.dispose();
super.dispose();
}
}
自定义样式
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
int endTime = DateTime.now().millisecondsSinceEpoch + 1000 * 30;
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Custom Styled Countdown Timer')),
body: Center(
child: CountdownTimer(
endTime: endTime,
widgetBuilder: (_, CurrentRemainingTime time) {
if (time == null) {
return Text('Game over');
}
return Text(
'days: [ ${time.days} ], hours: [ ${time.hours} ], min: [ ${time.min} ], sec: [ ${time.sec} ]');
},
),
),
),
);
}
}
以上是关于flutter_countdown_timer
插件的基本使用方法和一些示例代码。希望对你有所帮助!
更多关于Flutter倒计时功能插件flutter_countdown_timer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter倒计时功能插件flutter_countdown_timer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个使用 flutter_countdown_timer
插件在 Flutter 中实现倒计时功能的示例代码。这个插件允许你创建一个简单的倒计时计时器,并在计时器结束时执行回调。
首先,确保在你的 pubspec.yaml
文件中添加 flutter_countdown_timer
依赖:
dependencies:
flutter:
sdk: flutter
flutter_countdown_timer: ^4.0.1 # 请确保使用最新版本
然后,运行 flutter pub get
来安装依赖。
接下来,你可以在你的 Flutter 应用中使用这个插件。以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:flutter_countdown_timer/flutter_countdown_timer.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Countdown Timer Example',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CountdownTimerScreen(),
);
}
}
class CountdownTimerScreen extends StatefulWidget {
@override
_CountdownTimerScreenState createState() => _CountdownTimerScreenState();
}
class _CountdownTimerScreenState extends State<CountdownTimerScreen> {
CountdownController _controller;
@override
void initState() {
super.initState();
// 初始化倒计时控制器,设置时间为60秒
_controller = CountdownController(
duration: 60,
interval: 1,
);
// 当倒计时结束时,执行回调
_controller.completionCallback = () {
print("倒计时结束!");
// 这里可以添加更多逻辑,比如显示一个对话框
showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text('倒计时结束'),
content: Text('时间到了!'),
actions: <Widget>[
FlatButton(
child: Text('确定'),
onPressed: () {
Navigator.of(context).pop();
},
),
],
),
);
};
// 监听倒计时变化
_controller.listen((remainingTime) {
print("剩余时间: ${remainingTime.remainingSeconds} 秒");
});
// 开始倒计时
_controller.start();
}
@override
void dispose() {
// 释放资源
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Countdown Timer'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'剩余时间: ${_controller.remainingTime?.inSeconds ?? 0} 秒',
style: TextStyle(fontSize: 24),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
if (_controller.isActive) {
_controller.reset();
} else {
_controller.start();
}
},
child: Text(_controller.isActive ? '重置' : '开始'),
),
],
),
),
);
}
}
在这个示例中,我们创建了一个 CountdownController
对象来管理倒计时。我们设置了倒计时的初始时间为60秒,并指定了每秒更新一次。当倒计时结束时,会执行一个回调,这里简单地打印了一个消息并显示了一个对话框。
我们还在 initState
方法中添加了一个监听器来监听倒计时的变化,并在控制台中打印剩余时间。在 build
方法中,我们显示了一个文本和一个按钮。如果倒计时正在进行,按钮会显示“重置”,否则显示“开始”。点击按钮可以启动或重置倒计时。
确保你理解这个示例,并根据你的具体需求进行调整。