diff --git a/ln_jq_app/lib/pages/b_page/reservation/controller.dart b/ln_jq_app/lib/pages/b_page/reservation/controller.dart index edc87c7..1d192f5 100644 --- a/ln_jq_app/lib/pages/b_page/reservation/controller.dart +++ b/ln_jq_app/lib/pages/b_page/reservation/controller.dart @@ -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 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 dataList = jobDataResult.data is List ? jobDataResult.data : []; + final List 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(); - } } diff --git a/ln_jq_app/lib/pages/c_page/reservation/controller.dart b/ln_jq_app/lib/pages/c_page/reservation/controller.dart index 17f9a4f..f2ff8ac 100644 --- a/ln_jq_app/lib/pages/c_page/reservation/controller.dart +++ b/ln_jq_app/lib/pages/c_page/reservation/controller.dart @@ -2,17 +2,11 @@ import 'dart:async'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:get/get.dart'; -import 'package:getx_scaffold/common/common.dart'; -import 'package:getx_scaffold/common/services/http.dart'; import 'package:getx_scaffold/getx_scaffold.dart'; -import 'package:intl/intl.dart'; import 'package:ln_jq_app/common/model/base_model.dart'; import 'package:ln_jq_app/common/model/station_model.dart'; import 'package:ln_jq_app/common/model/vehicle_info.dart'; import 'package:ln_jq_app/pages/b_page/site/controller.dart'; -import 'package:ln_jq_app/pages/c_page/reservation_edit/controller.dart'; -import 'package:ln_jq_app/pages/c_page/reservation_edit/view.dart'; import 'package:ln_jq_app/pages/qr_code/view.dart'; import 'package:ln_jq_app/storage_service.dart'; @@ -395,7 +389,6 @@ class C_ReservationController extends GetxController with BaseControllerMixin { ); var result = BaseModel.fromJson(responseData?.data); - if (responseData == null || result.code != 0) { dismissLoading(); showToast(result.error); @@ -546,6 +539,7 @@ class C_ReservationController extends GetxController with BaseControllerMixin { //用来管理查看预约的弹窗 Worker? _sheetWorker; bool init = false; + Timer? _refreshTimer; @override bool get listenLifecycleEvent => true; @@ -555,7 +549,7 @@ class C_ReservationController extends GetxController with BaseControllerMixin { super.onInit(); getUserBindCarInfo(); getSiteList(); - + startAutoRefresh(); if (!init) { _setupListener(); init = true; @@ -565,9 +559,27 @@ class C_ReservationController extends GetxController with BaseControllerMixin { @override void dispose() { _sheetWorker?.dispose(); + stopAutoRefresh(); super.dispose(); } + void startAutoRefresh() { + // 先停止已存在的定时器,防止重复启动 + stopAutoRefresh(); + + // 创建一个每1分钟执行一次的周期性定时器 + _refreshTimer = Timer.periodic(const Duration(minutes: 1), (timer) { + getSiteList(); + }); + } + + ///停止定时器的方法 + void stopAutoRefresh() { + // 如果定时器存在并且是激活状态,就取消它 + _refreshTimer?.cancel(); + _refreshTimer = null; // 置为null,方便判断 + } + void _setupListener() { _sheetWorker = ever(shouldShowReservationList, (bool shouldShow) { if (shouldShow) { @@ -691,7 +703,9 @@ class C_ReservationController extends GetxController with BaseControllerMixin { try { showLoading("加氢站数据加载中"); - var responseData = await HttpService.to.get("appointment/station/queryHydrogenSiteInfo"); + var responseData = await HttpService.to.get( + "appointment/station/queryHydrogenSiteInfo", + ); if (responseData == null || responseData.data == null) { showToast('暂时无法获取站点信息'); diff --git a/ln_jq_app/lib/pages/c_page/reservation/view.dart b/ln_jq_app/lib/pages/c_page/reservation/view.dart index 53f6f8e..d785b9c 100644 --- a/ln_jq_app/lib/pages/c_page/reservation/view.dart +++ b/ln_jq_app/lib/pages/c_page/reservation/view.dart @@ -3,11 +3,9 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:getx_scaffold/getx_scaffold.dart'; import 'package:ln_jq_app/common/model/station_model.dart'; -import 'package:ln_jq_app/pages/qr_code/view.dart'; import 'package:ln_jq_app/storage_service.dart'; import 'controller.dart'; -import 'reservation_list_bottomsheet.dart'; ///加氢预约 class ReservationPage extends GetView {