优化定时器
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
@@ -40,6 +42,32 @@ class ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
customStartTime = DateTime.now();
|
customStartTime = DateTime.now();
|
||||||
customEndTime = customStartTime!.add(const Duration(days: 1));
|
customEndTime = customStartTime!.add(const Duration(days: 1));
|
||||||
renderData();
|
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 = "";
|
String name = "";
|
||||||
@@ -56,6 +84,7 @@ class ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
String jobTipStr = "";
|
String jobTipStr = "";
|
||||||
String jobDetailsStr = "";
|
String jobDetailsStr = "";
|
||||||
String jobId = "";
|
String jobId = "";
|
||||||
|
Timer? _refreshTimer;
|
||||||
|
|
||||||
Future<void> renderData() async {
|
Future<void> renderData() async {
|
||||||
showLoading("加载中");
|
showLoading("加载中");
|
||||||
@@ -66,7 +95,9 @@ class ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
final jobDataResult = BaseModel.fromJson(jobData.data);
|
final jobDataResult = BaseModel.fromJson(jobData.data);
|
||||||
if (jobDataResult.code == 0) {
|
if (jobDataResult.code == 0) {
|
||||||
try {
|
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];
|
final firstJob = dataList[0];
|
||||||
|
|
||||||
jobId = firstJob["id"] ?? "";
|
jobId = firstJob["id"] ?? "";
|
||||||
@@ -408,11 +439,4 @@ class ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
await StorageService.to.clearLoginInfo();
|
await StorageService.to.clearLoginInfo();
|
||||||
Get.offAll(() => LoginPage());
|
Get.offAll(() => LoginPage());
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void onClose() {
|
|
||||||
broadcastTitleController.dispose();
|
|
||||||
broadcastContentController.dispose();
|
|
||||||
super.onClose();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,17 +2,11 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
import 'package:flutter/material.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: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/base_model.dart';
|
||||||
import 'package:ln_jq_app/common/model/station_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/common/model/vehicle_info.dart';
|
||||||
import 'package:ln_jq_app/pages/b_page/site/controller.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/pages/qr_code/view.dart';
|
||||||
import 'package:ln_jq_app/storage_service.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);
|
var result = BaseModel.fromJson(responseData?.data);
|
||||||
|
|
||||||
|
|
||||||
if (responseData == null || result.code != 0) {
|
if (responseData == null || result.code != 0) {
|
||||||
dismissLoading();
|
dismissLoading();
|
||||||
showToast(result.error);
|
showToast(result.error);
|
||||||
@@ -546,6 +539,7 @@ class C_ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
//用来管理查看预约的弹窗
|
//用来管理查看预约的弹窗
|
||||||
Worker? _sheetWorker;
|
Worker? _sheetWorker;
|
||||||
bool init = false;
|
bool init = false;
|
||||||
|
Timer? _refreshTimer;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
bool get listenLifecycleEvent => true;
|
bool get listenLifecycleEvent => true;
|
||||||
@@ -555,7 +549,7 @@ class C_ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
super.onInit();
|
super.onInit();
|
||||||
getUserBindCarInfo();
|
getUserBindCarInfo();
|
||||||
getSiteList();
|
getSiteList();
|
||||||
|
startAutoRefresh();
|
||||||
if (!init) {
|
if (!init) {
|
||||||
_setupListener();
|
_setupListener();
|
||||||
init = true;
|
init = true;
|
||||||
@@ -565,9 +559,27 @@ class C_ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_sheetWorker?.dispose();
|
_sheetWorker?.dispose();
|
||||||
|
stopAutoRefresh();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void startAutoRefresh() {
|
||||||
|
// 先停止已存在的定时器,防止重复启动
|
||||||
|
stopAutoRefresh();
|
||||||
|
|
||||||
|
// 创建一个每1分钟执行一次的周期性定时器
|
||||||
|
_refreshTimer = Timer.periodic(const Duration(minutes: 1), (timer) {
|
||||||
|
getSiteList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
///停止定时器的方法
|
||||||
|
void stopAutoRefresh() {
|
||||||
|
// 如果定时器存在并且是激活状态,就取消它
|
||||||
|
_refreshTimer?.cancel();
|
||||||
|
_refreshTimer = null; // 置为null,方便判断
|
||||||
|
}
|
||||||
|
|
||||||
void _setupListener() {
|
void _setupListener() {
|
||||||
_sheetWorker = ever(shouldShowReservationList, (bool shouldShow) {
|
_sheetWorker = ever(shouldShowReservationList, (bool shouldShow) {
|
||||||
if (shouldShow) {
|
if (shouldShow) {
|
||||||
@@ -691,7 +703,9 @@ class C_ReservationController extends GetxController with BaseControllerMixin {
|
|||||||
try {
|
try {
|
||||||
showLoading("加氢站数据加载中");
|
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) {
|
if (responseData == null || responseData.data == null) {
|
||||||
showToast('暂时无法获取站点信息');
|
showToast('暂时无法获取站点信息');
|
||||||
|
|||||||
@@ -3,11 +3,9 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:getx_scaffold/getx_scaffold.dart';
|
import 'package:getx_scaffold/getx_scaffold.dart';
|
||||||
import 'package:ln_jq_app/common/model/station_model.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 'package:ln_jq_app/storage_service.dart';
|
||||||
|
|
||||||
import 'controller.dart';
|
import 'controller.dart';
|
||||||
import 'reservation_list_bottomsheet.dart';
|
|
||||||
|
|
||||||
///加氢预约
|
///加氢预约
|
||||||
class ReservationPage extends GetView<C_ReservationController> {
|
class ReservationPage extends GetView<C_ReservationController> {
|
||||||
|
|||||||
Reference in New Issue
Block a user