优化定时器

This commit is contained in:
2026-01-15 13:24:02 +08:00
parent d8f335eb4e
commit 9b64fdfa52
3 changed files with 55 additions and 19 deletions

View File

@@ -1,3 +1,5 @@
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
@@ -40,6 +42,32 @@ class ReservationController extends GetxController with BaseControllerMixin {
customStartTime = DateTime.now();
customEndTime = customStartTime!.add(const Duration(days: 1));
renderData();
startAutoRefresh();
}
@override
void onClose() {
broadcastTitleController.dispose();
broadcastContentController.dispose();
stopAutoRefresh();
super.onClose();
}
void startAutoRefresh() {
// 先停止已存在的定时器,防止重复启动
stopAutoRefresh();
// 创建一个每1分钟执行一次的周期性定时器
_refreshTimer = Timer.periodic(const Duration(minutes: 1), (timer) {
renderData();
});
}
///停止定时器的方法
void stopAutoRefresh() {
// 如果定时器存在并且是激活状态,就取消它
_refreshTimer?.cancel();
_refreshTimer = null; // 置为null方便判断
}
String name = "";
@@ -56,6 +84,7 @@ class ReservationController extends GetxController with BaseControllerMixin {
String jobTipStr = "";
String jobDetailsStr = "";
String jobId = "";
Timer? _refreshTimer;
Future<void> renderData() async {
showLoading("加载中");
@@ -66,7 +95,9 @@ class ReservationController extends GetxController with BaseControllerMixin {
final jobDataResult = BaseModel.fromJson(jobData.data);
if (jobDataResult.code == 0) {
try {
final List<dynamic> dataList = jobDataResult.data is List ? jobDataResult.data : [];
final List<dynamic> dataList = jobDataResult.data is List
? jobDataResult.data
: [];
final firstJob = dataList[0];
jobId = firstJob["id"] ?? "";
@@ -408,11 +439,4 @@ class ReservationController extends GetxController with BaseControllerMixin {
await StorageService.to.clearLoginInfo();
Get.offAll(() => LoginPage());
}
@override
void onClose() {
broadcastTitleController.dispose();
broadcastContentController.dispose();
super.onClose();
}
}