Flutter定时器管理插件flutter_timer_util的使用
Flutter定时器管理插件flutter_timer_util的使用
本插件是一个用于实现防抖(debounce)、节流(throttle)和重复执行(repeat)功能的定时器工具包。以下是详细的使用说明。
特性
- 防抖(Debouncing)
- 节流(Throttling)
- 重复执行(Repeater)
开始使用
在你的 pubspec.yaml
文件中添加以下依赖项:
dependencies:
flutter_timer_util: <latest_version>
然后运行以下命令以安装依赖:
flutter pub get
使用示例
1. 防抖(Debouncing)
防抖是一种延迟执行回调的方法,只有在指定时间内没有再次触发时才执行。
import 'package:flutter/material.dart';
import 'package:flutter_timer_util/flutter_timer_util.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TimerExamplePage(),
);
}
}
class TimerExamplePage extends StatefulWidget {
[@override](/user/override)
_TimerExamplePageState createState() => _TimerExamplePageState();
}
class _TimerExamplePageState extends State<TimerExamplePage> {
late final debouncing;
[@override](/user/override)
void initState() {
super.initState();
// 创建一个防抖定时器,间隔为1秒
debouncing = FlutterTimerUtil.debouncing(
interval: Duration(seconds: 1));
// 设置回调方法
// 当调用结束后,在指定的时间间隔后执行回调
debouncing.call(() {
print('print after 1 seconds');
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('防抖示例'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 模拟用户操作
print('按钮被点击了');
},
),
),
);
}
}
2. 节流(Throttling)
节流是限制回调执行频率的一种方式,无论触发多少次,只会在指定时间间隔内执行一次。
import 'package:flutter/material.dart';
import 'package:flutter_timer_util/flutter_timer_util.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TimerExamplePage(),
);
}
}
class TimerExamplePage extends StatefulWidget {
[@override](/user/override)
_TimerExamplePageState createState() => _TimerExamplePageState();
}
class _TimerExamplePageState extends State<TimerExamplePage> {
late final throttling;
[@override](/user/override)
void initState() {
super.initState();
// 创建一个节流定时器,间隔为1秒
throttling = FlutterTimerUtil.throttling(
interval: Duration(seconds: 1));
// 设置回调方法
// 在指定的时间间隔内,无论触发多少次,只会执行一次
throttling.call(() {
print('print once every 1 second');
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('节流示例'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 模拟用户操作
print('按钮被点击了');
},
),
),
);
}
}
3. 重复执行(Repeater)
重复执行可以定期调用某个回调函数。
import 'package:flutter/material.dart';
import 'package:flutter_timer_util/flutter_timer_util.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: TimerExamplePage(),
);
}
}
class TimerExamplePage extends StatefulWidget {
[@override](/user/override)
_TimerExamplePageState createState() => _TimerExamplePageState();
}
class _TimerExamplePageState extends State<TimerExamplePage> {
late final repeater;
[@override](/user/override)
void initState() {
super.initState();
// 创建一个重复执行定时器,每2秒执行一次
repeater = FlutterTimerUtil.repeater(
interval: Duration(seconds: 2));
// 设置回调方法
// 每隔2秒执行一次
repeater.call(() {
print('repeat every 2 seconds');
});
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('重复执行示例'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
// 模拟用户操作
print('按钮被点击了');
},
),
),
);
}
}
更多关于Flutter定时器管理插件flutter_timer_util的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter定时器管理插件flutter_timer_util的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
flutter_timer_util
是一个用于管理定时器的 Flutter 插件,它提供了简单易用的 API 来创建、启动、暂停、恢复和取消定时器。这个插件非常适合需要在 Flutter 应用中处理定时任务的场景。
安装
首先,你需要在 pubspec.yaml
文件中添加 flutter_timer_util
依赖:
dependencies:
flutter:
sdk: flutter
flutter_timer_util: ^1.0.0
然后运行 flutter pub get
来安装依赖。
基本用法
1. 创建定时器
你可以使用 TimerUtil
类来创建和管理定时器。以下是一个简单的例子:
import 'package:flutter/material.dart';
import 'package:flutter_timer_util/flutter_timer_util.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: TimerExample(),
);
}
}
class TimerExample extends StatefulWidget {
@override
_TimerExampleState createState() => _TimerExampleState();
}
class _TimerExampleState extends State<TimerExample> {
TimerUtil? _timerUtil;
int _seconds = 0;
@override
void initState() {
super.initState();
_timerUtil = TimerUtil.periodic(Duration(seconds: 1), (timer) {
setState(() {
_seconds++;
});
});
}
@override
void dispose() {
_timerUtil?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Timer Example')),
body: Center(
child: Text('Seconds: $_seconds'),
),
);
}
}
在这个例子中,我们创建了一个每隔一秒触发一次的定时器,并在每次触发时更新 _seconds
的值。
2. 暂停和恢复定时器
你可以使用 pause()
和 resume()
方法来暂停和恢复定时器:
class _TimerExampleState extends State<TimerExample> {
TimerUtil? _timerUtil;
int _seconds = 0;
@override
void initState() {
super.initState();
_timerUtil = TimerUtil.periodic(Duration(seconds: 1), (timer) {
setState(() {
_seconds++;
});
});
}
void _pauseTimer() {
_timerUtil?.pause();
}
void _resumeTimer() {
_timerUtil?.resume();
}
@override
void dispose() {
_timerUtil?.cancel();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text('Timer Example')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Seconds: $_seconds'),
SizedBox(height: 20),
ElevatedButton(
onPressed: _pauseTimer,
child: Text('Pause'),
),
ElevatedButton(
onPressed: _resumeTimer,
child: Text('Resume'),
),
],
),
),
);
}
}
3. 取消定时器
你可以使用 cancel()
方法来取消定时器:
void _cancelTimer() {
_timerUtil?.cancel();
}
4. 一次性定时器
如果你只需要一个一次性定时器,可以使用 TimerUtil
的 once
方法:
TimerUtil.once(Duration(seconds: 5), () {
print('5 seconds have passed');
});