From 80eca1553ab286394990435bcd933a9ea95e7c6d Mon Sep 17 00:00:00 2001 From: lxm <1274844347@qq.com> Date: Fri, 25 Jul 2025 22:00:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(OTA=E5=8D=87=E7=BA=A7):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=A7=E5=93=81=E9=85=8D=E7=BD=AE=E6=9C=AC=E5=9C=B0?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在AppConfig中添加getproduct方法用于本地查询产品配置 - 修改OTA升级控制器使用本地配置替代API请求 - 在设置控制器中添加状态锁防止重复检查更新 --- lib/data/models/appconfig.dart | 6 ++++ .../controllers/ota_upgrade_controller.dart | 32 +++++++++++-------- .../controllers/settings_controller.dart | 14 ++++---- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/lib/data/models/appconfig.dart b/lib/data/models/appconfig.dart index a2086b527..19dcf0565 100644 --- a/lib/data/models/appconfig.dart +++ b/lib/data/models/appconfig.dart @@ -30,4 +30,10 @@ class AppConfig { config.products.map((user) => user.devicename).toList(); return names; } + + static DBProduct? getproduct(String name) { + final foundProduct = + config.products.firstWhere((product) => product.devicename == name); + return foundProduct; + } } diff --git a/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart b/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart index 907dd85f8..6d1162846 100644 --- a/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart +++ b/lib/modules/ota_upgrade/controllers/ota_upgrade_controller.dart @@ -1,4 +1,5 @@ import 'package:classic_bluetooth/classic_bluetooth.dart'; +import 'package:voitrans/data/models/appconfig_model.dart'; import '/routes/app_routes.dart'; import 'package:logger/web.dart'; import 'package:flutter/material.dart'; @@ -12,6 +13,7 @@ import 'package:dio/dio.dart'; import 'package:path_provider/path_provider.dart'; import 'package:ota/ota.dart'; import '../../../data/services/ble_manager.dart'; +import '../../../data/models/appconfig.dart'; class OtaUpgradeController extends GetxController { static const int NOT_STARTED = -1; // 未开始 @@ -193,24 +195,26 @@ class OtaUpgradeController extends GetxController { _address = connectedDevices.first.address; } - // API请求 - final response = await Api.getproduct({ - "id": deviceInfo.firmwareProductId, - }); + DBProduct? product = AppConfig.getproduct("DeapSound"); - // 处理API响应 - if (response['product'] == null) { - throw const FormatException('API 响应格式错误'); - } + // // API请求 + // final response = await Api.getproduct({ + // "id": deviceInfo.firmwareProductId, + // }); + + // // 处理API响应 + // if (response['product'] == null) { + // throw const FormatException('API 响应格式错误'); + // } - final resp = OtaConfigResp.fromJson(response); - Logger().d('getequipmentinfo,resp.systemversion: ${resp.systemversion}'); - latestVersion.value = resp.systemversion!; - updatedescription.value = resp.updatedescription!; - updatepackageaddress = resp.updatepackageaddress!; + // final resp = OtaConfigResp.fromJson(response); + // Logger().d('getequipmentinfo,resp.systemversion: ${resp.systemversion}'); + // latestVersion.value = resp.systemversion!; + // updatedescription.value = resp.updatedescription!; + updatepackageaddress = product!.updatepackageaddress!; // 版本检查 - bool isUpdate = _isNewVersionAvailable(resp.systemversion!); + bool isUpdate = _isNewVersionAvailable(product!.version!); if (isUpdate) { await _bleManager.setEnterOta(true); diff --git a/lib/modules/settings/controllers/settings_controller.dart b/lib/modules/settings/controllers/settings_controller.dart index 5b92b5474..7c3bf6a8c 100644 --- a/lib/modules/settings/controllers/settings_controller.dart +++ b/lib/modules/settings/controllers/settings_controller.dart @@ -1,4 +1,3 @@ -import 'package:firebase_auth/firebase_auth.dart' as firebase; import 'package:get/get.dart'; import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; @@ -7,15 +6,11 @@ import '../../../core/themes/theme_service.dart'; import '../../../data/services/speech_factory.dart'; import '../models/language_model.dart'; import 'package:logger/logger.dart'; -import '../../../data/models/user_Info.dart'; import '../../../data/services/ble_manager.dart'; -import 'package:path_provider/path_provider.dart'; -import 'dart:io'; import 'package:package_info_plus/package_info_plus.dart'; import 'package:permission_handler/permission_handler.dart'; import 'dart:async'; -import 'package:app_settings/app_settings.dart'; import '../../../data/services/version_update_service.dart'; import '../../common/widgets/version_update_dialog.dart'; @@ -128,6 +123,8 @@ class SettingsController extends GetxController { final appVersion = ''.obs; final buildNumber = ''.obs; + bool isCheckingUpdate = false; //状态锁,防止重复检查 + // 权限相关 // 权限组,用于在UI中显示 final List> permissionGroups = [ @@ -482,6 +479,9 @@ class SettingsController extends GetxController { /// 手动检查版本更新 Future checkForUpdate() async { + if (isCheckingUpdate) return; + isCheckingUpdate = true; + try { // 显示加载提示 Get.dialog( @@ -515,7 +515,7 @@ class SettingsController extends GetxController { } catch (e) { // 关闭加载提示 if (Get.isDialogOpen == true) { - Get.back(); + Get.back(closeOverlays: true); } Get.snackbar( @@ -525,6 +525,8 @@ class SettingsController extends GetxController { backgroundColor: Colors.red.withOpacity(0.8), colorText: Colors.white, ); + } finally { + isCheckingUpdate = false; } } }