app-starlock/lib/talk/startChart/handle/other/overtime_timer_manger.dart

50 lines
1.0 KiB
Dart

import 'dart:async';
typedef TimeoutCallback = void Function();
class OverTimeTimerManager {
// 构造函数,接受超时时间
OverTimeTimerManager({required this.timeoutInSeconds});
// 定义一个可取消的 Timer
Timer? _timer;
// 超时时间(以秒为单位),是 final 的,因此必须在构造函数中初始化
final int timeoutInSeconds;
// 超时回调函数
TimeoutCallback? _onTimeout;
// 启动计时器
void startTimer() {
_cancelTimer(); // 取消任何已存在的计时器
_timer = Timer(Duration(seconds: timeoutInSeconds), () {
// 超时回调方法
_onTimeout?.call();
// 清除定时器
_cancelTimer();
});
}
// 接收到消息时调用此方法
void receiveMessage() {
startTimer();
}
// 设置超时回调函数
void setOnTimeout(TimeoutCallback? callback) {
_onTimeout = callback;
}
// 取消计时器
void _cancelTimer() {
_timer?.cancel();
_timer = null;
}
// 清理资源
void dispose() {
_cancelTimer();
}
}