Flutter倒计时功能插件count_down_time的使用
Flutter倒计时功能插件count_down_time
的使用
count_down_time
是一个简单的Flutter插件,用于实现倒计时功能。它提供了多种方式来初始化倒计时(如秒、分钟和小时),并且支持自定义样式和回调函数。
示例效果
开始使用
安装插件
首先,在你的 pubspec.yaml
文件中添加依赖:
dependencies:
count_down_time: ^latest_version
然后运行 flutter pub get
来安装插件。
基本示例
以下是一个基本的使用示例:
import 'package:flutter/material.dart';
import 'package:count_down_time/count_down_time.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
bool timeoutReached = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Count Down Time Demo'),
),
body: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
CountDownTime(
timeId: 'simple-timer',
timeStartInSeconds: 30,
onChangeTime: (time) {
setState(() {
timeoutReached = false;
});
},
onTimeOut: () {
setState(() {
timeoutReached = true;
});
},
),
Container(
padding: const EdgeInsets.only(top: 10),
alignment: Alignment.center,
child: ElevatedButton(
child: const Text('Restart count'),
onPressed: () {
CountDownTimeController.pushTimerRenewId('simple-timer');
},
),
),
Padding(
padding: const EdgeInsets.only(top: 10),
child: Text(timeoutReached ? 'Timeout Reached' : ''),
),
],
),
),
);
}
}
属性说明
属性名称 | 类型 | 描述 |
---|---|---|
timeId |
String | 定义计时器的ID。 |
timeStartInSeconds |
int | 定义倒计时开始的时间(以秒为单位)。 |
textStyle (可选) |
TextStyle | 定义计时器文本的样式。 |
onTimeOut |
Function | 当倒计时结束时调用的回调函数。 |
onChangeTime |
Function(int time) | 当倒计时发生变化时调用的回调函数。 |
工厂方法
该插件还提供了工厂方法来处理以分钟或小时为单位的倒计时:
分钟倒计时
CountDownTime.minutes(
timeStartInMinutes: 2,
)
小时倒计时
CountDownTime.hours(
timeStartInHours: 2,
)
完整示例
下面是一个完整的示例,展示了如何使用不同的时间单位来启动倒计时,并且可以重新启动倒计时:
import 'package:flutter/material.dart';
import 'package:count_down_time/count_down_time.dart';
void main() {
runApp(const CountDownTimeAppDemo());
}
class CountDownTimeAppDemo extends StatefulWidget {
const CountDownTimeAppDemo({Key? key}) : super(key: key);
@override
State<CountDownTimeAppDemo> createState() => _CountDownTimeAppDemoState();
}
class _CountDownTimeAppDemoState extends State<CountDownTimeAppDemo> {
bool timeoutReached = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Count Down Time Demo'),
),
body: Container(
padding: const EdgeInsets.all(15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: [
const CountDownTime(
textStyle: TextStyle(color: Colors.red, fontSize: 35),
timeStartInSeconds: 30,
onTimeOut: () {
print("Time out reached");
},
),
CountDownTime.minutes(
textStyle: const TextStyle(color: Colors.blue, fontSize: 35),
timeStartInMinutes: 2,
onTimeOut: () {
print("Minute timer finished");
},
),
CountDownTime.hours(
textStyle: const TextStyle(color: Colors.green, fontSize: 35),
timeStartInHours: 2,
onTimeOut: () {
print("Hour timer finished");
},
),
Container(
padding: const EdgeInsets.only(top: 10),
alignment: Alignment.center,
child: ElevatedButton(
child: const Text('Restart all timers'),
onPressed: () {
CountDownTimeController.pushTimerRenewId('simple-timer');
},
),
),
],
),
),
),
);
}
}
以上就是关于 count_down_time
插件的基本使用方法。你可以根据自己的需求调整倒计时的时间和样式,并在倒计时结束后执行相应的操作。
更多关于Flutter倒计时功能插件count_down_time的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter倒计时功能插件count_down_time的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用count_down_time
插件来实现倒计时功能的代码示例。首先,你需要确保在pubspec.yaml
文件中添加了count_down_time
依赖:
dependencies:
flutter:
sdk: flutter
count_down_time: ^x.y.z # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来是一个简单的示例代码,展示如何使用count_down_time
插件来实现倒计时功能:
import 'package:flutter/material.dart';
import 'package:count_down_time/count_down_time.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Countdown Timer Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CountdownTimerScreen(),
);
}
}
class CountdownTimerScreen extends StatefulWidget {
@override
_CountdownTimerScreenState createState() => _CountdownTimerScreenState();
}
class _CountdownTimerScreenState extends State<CountdownTimerScreen> {
CountDownController _controller;
String _timeRemaining = "00:00:00";
@override
void initState() {
super.initState();
// 初始化倒计时控制器,设置初始时间为60秒(00:01:00)
_controller = CountDownController(
endTime: 60,
onTick: (remainingTime) {
// 更新UI
setState(() {
_timeRemaining = remainingTime;
});
},
onEnd: () {
// 倒计时结束时的回调
setState(() {
_timeRemaining = "Time's up!";
});
},
);
// 开始倒计时
_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(
_timeRemaining,
style: TextStyle(fontSize: 48),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: () {
// 重启倒计时
_controller.reset();
_controller.start();
},
child: Text('Restart'),
),
],
),
),
);
}
}
在这个示例中:
- 我们定义了一个
CountdownTimerScreen
,它是一个有状态的Widget。 - 在
initState
方法中,我们初始化了一个CountDownController
对象,并设置了倒计时的初始时间(60秒)、每秒更新的回调(onTick
)和倒计时结束时的回调(onEnd
)。 - 我们使用
_controller.start()
方法开始倒计时。 - 在
dispose
方法中,我们调用_controller.dispose()
来释放资源,避免内存泄漏。 - 在UI部分,我们使用一个
Text
widget来显示剩余时间,并使用一个ElevatedButton
来重启倒计时。
这样,你就成功地在Flutter项目中使用了count_down_time
插件来实现倒计时功能。如果你需要更复杂的功能,比如暂停和继续倒计时,你可以参考count_down_time
插件的文档,进一步扩展这个示例。