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(); } }