Flutter计时器功能插件timer_widget的使用
Flutter计时器功能插件timer_widget的使用
特性
- 计时器小部件可以包裹在任何类型的控件上,并完全自定义。
- 可以用于任何类型的按钮。
- 可以创建自定义按钮。
- 可以用在任何控件上。
- 可以通过控制器进行管理。
使用
屏幕截图
示例
TimerWidget(
timeOutInSeconds: 5, // 设置超时时间为5秒
onPressed: () {}, // 按钮点击事件
controller: timerController, // 外部控制
buttonType: ButtonType.outline, // 按钮类型为轮廓按钮
buttonStyle: ButtonStyle(
backgroundColor: MaterialStateProperty.all(
Colors.orangeAccent), // 设置背景颜色为橙色
),
builder: (context, seconds, isCounting) { // 构建函数
if(isCounting){
// 当计数时显示的组件
return const CircularProgressIndicator(); // 显示加载指示器
}else{
// 在未点击时显示的组件
return const Icon(Icons.ads_click); // 显示广告点击图标
}
}),
// 通过控制器从其他小部件或函数中处理
TimerWidgetController timerController = TimerWidgetController(); // 创建控制器
timerController.startTimer(); // 开始计时
timerController.stopTimer(); // 停止计时
timerController.isCounting; // 获取当前是否正在计时
示例代码
import 'package:flutter/material.dart';
import 'package:timer_widget/timer_widget.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: '计时器小部件演示',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const HomePage(),
);
}
}
class HomePage extends StatefulWidget {
const HomePage({super.key});
[@override](/user/override)
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
TimerWidgetController timerController = TimerWidgetController();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('计时器小部件演示')),
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TimerWidget(
timeOutInSeconds: 5,
onPressed: () {}, // 或者可以通过外部控制器处理
controller: timerController, // 外部控制
buttonType: ButtonType.none, // 自定义控件
// ButtonType.icon,
// ButtonType.outline,
// ButtonType.elavated,
// buttonStyle: ButtonStyle(
// backgroundColor: MaterialStateProperty.all(Colors.orangeAccent)),
builder: (context, seconds, isCounting) {
if (isCounting) {
// 计数时显示的组件
return const CircularProgressIndicator(); // 加载指示器
} else {
// 未点击时显示的组件
return const Icon(Icons.ads_click); // 广告点击图标
}
}),
Text(
"示例:从计时器小部件外部或代码逻辑部分调用API",
),
ElevatedButton(
onPressed: loadApiData,
child: Text("执行任何未来的函数"),
),
ElevatedButton(
onPressed: () {
if (timerController.isCounting) {
timerController.stopTimer();
}
},
child: Text("检查计时器小部件是否计数然后停止"),
),
],
),
);
}
///////////// 从API加载数据
loadApiData() async {
//-------- 数据
//-------- 数据
timerController.startTimer(); // 开始计时
// 加载数据后
timerController.stopTimer(); // 停止计时
}
}
更多关于Flutter计时器功能插件timer_widget的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter计时器功能插件timer_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
timer_widget
是一个用于 Flutter 的计时器插件,它可以帮助你轻松地在应用中实现计时器功能。以下是如何使用 timer_widget
插件的步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 timer_widget
插件的依赖:
dependencies:
flutter:
sdk: flutter
timer_widget: ^1.0.0 # 请确保使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 导入插件
在你的 Dart 文件中导入 timer_widget
:
import 'package:timer_widget/timer_widget.dart';
3. 使用 TimerWidget
TimerWidget
是一个简单的计时器组件,你可以通过设置 duration
来指定计时器的时长,并通过 onFinished
回调来处理计时器结束时的操作。
以下是一个简单的示例:
import 'package:flutter/material.dart';
import 'package:timer_widget/timer_widget.dart';
class TimerExample extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Timer Widget Example'),
),
body: Center(
child: TimerWidget(
duration: Duration(seconds: 60), // 设置计时器时长为60秒
onFinished: () {
// 计时器结束时的回调
print('Timer finished!');
},
builder: (BuildContext context, Duration remaining) {
// 自定义计时器显示样式
return Text(
'${remaining.inSeconds} seconds remaining',
style: TextStyle(fontSize: 24),
);
},
),
),
);
}
}
void main() => runApp(MaterialApp(
home: TimerExample(),
));
4. 自定义计时器显示
TimerWidget
提供了一个 builder
参数,允许你自定义计时器的显示样式。builder
函数接收两个参数:BuildContext
和 Duration
,其中 Duration
表示剩余的时长。
在上面的示例中,我们使用 remaining.inSeconds
来显示剩余的秒数。
5. 控制计时器
TimerWidget
还提供了一些方法来控制计时器的启动、暂停和重置:
start()
: 启动计时器。pause()
: 暂停计时器。reset()
: 重置计时器。
你可以在需要的地方调用这些方法来控制计时器的行为。
6. 完整示例
以下是一个完整的示例,展示了如何使用 TimerWidget
并控制计时器的启动、暂停和重置:
import 'package:flutter/material.dart';
import 'package:timer_widget/timer_widget.dart';
class TimerExample extends StatefulWidget {
[@override](/user/override)
_TimerExampleState createState() => _TimerExampleState();
}
class _TimerExampleState extends State<TimerExample> {
TimerController _timerController = TimerController();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Timer Widget Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TimerWidget(
duration: Duration(seconds: 60),
onFinished: () {
print('Timer finished!');
},
builder: (BuildContext context, Duration remaining) {
return Text(
'${remaining.inSeconds} seconds remaining',
style: TextStyle(fontSize: 24),
);
},
controller: _timerController,
),
SizedBox(height: 20),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () => _timerController.start(),
child: Text('Start'),
),
SizedBox(width: 10),
ElevatedButton(
onPressed: () => _timerController.pause(),
child: Text('Pause'),
),
SizedBox(width: 10),
ElevatedButton(
onPressed: () => _timerController.reset(),
child: Text('Reset'),
),
],
),
],
),
),
);
}
}
void main() => runApp(MaterialApp(
home: TimerExample(),
));