From 1a9f0d79ac79645ec9375dafe6c70d402eed6030 Mon Sep 17 00:00:00 2001 From: speakeloudest Date: Mon, 3 Nov 2025 00:48:15 -0800 Subject: [PATCH] =?UTF-8?q?=C2=A0=201.=20=E5=88=A0=E9=99=A4=E4=BA=86=20=5F?= =?UTF-8?q?kr=5FhandleSelectorProxy=20=E4=B8=AD=E4=BC=9A=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E6=AD=BB=E5=BE=AA=E7=8E=AF=E7=9A=84=E9=87=8D=E9=80=89=E9=80=BB?= =?UTF-8?q?=E8=BE=91=20=C2=A0=202.=20=E7=AE=80=E5=8C=96=E4=BA=86=20=5Fkr?= =?UTF-8?q?=5FhandleManualMode=EF=BC=8C=E5=8F=AA=E6=9B=B4=E6=96=B0=20UI=20?= =?UTF-8?q?=E4=B8=8D=E8=A7=A6=E5=8F=91=E9=87=8D=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hi_node_list/views/hi_node_list_view.dart | 17 +++---- .../controllers/kr_home_controller.dart | 47 +++++-------------- 2 files changed, 20 insertions(+), 44 deletions(-) diff --git a/lib/app/modules/hi_node_list/views/hi_node_list_view.dart b/lib/app/modules/hi_node_list/views/hi_node_list_view.dart index b378d81..e8e6021 100755 --- a/lib/app/modules/hi_node_list/views/hi_node_list_view.dart +++ b/lib/app/modules/hi_node_list/views/hi_node_list_view.dart @@ -29,14 +29,15 @@ class HINodeListView extends GetView { /// 获取用于显示的延迟值 int _getDisplayDelay(HINodeListController controller, KROutboundItem item) { - if (controller.homeController.kr_isConnected.value) { - return item.urlTestDelay.value; - } - if (!_fakeDelays.containsKey(item.tag)) { - final random = Random(); - _fakeDelays[item.tag] = 30 + random.nextInt(71); // 30-100ms - } - return _fakeDelays[item.tag] ?? 0; + return item.urlTestDelay.value; + // if (controller.homeController.kr_isConnected.value) { + // + // } + // if (!_fakeDelays.containsKey(item.tag)) { + // final random = Random(); + // _fakeDelays[item.tag] = 30 + random.nextInt(71); // 30-100ms + // } + // return _fakeDelays[item.tag] ?? 0; } /// 获取分组内最快节点的延迟值(单位:ms) diff --git a/lib/app/modules/kr_home/controllers/kr_home_controller.dart b/lib/app/modules/kr_home/controllers/kr_home_controller.dart index 0625c98..6e6da60 100755 --- a/lib/app/modules/kr_home/controllers/kr_home_controller.dart +++ b/lib/app/modules/kr_home/controllers/kr_home_controller.dart @@ -762,24 +762,11 @@ class KRHomeController extends GetxController with WidgetsBindingObserver { .value}', tag: 'HomeController'); - // 如果用户选择了auto但实际select类型不是auto - if (kr_cutTag.value == "auto" && element.selected != "auto") { - KRLogUtil.kr_d( - '用户选择了auto但实际不是auto,重新选择auto', tag: 'HomeController'); - KRSingBoxImp.instance.kr_selectOutbound("auto"); - _kr_handleAutoMode(element, allGroups); - return; - } - // 如果用户选择了具体节点但实际select类型不是该节点 - if (kr_cutTag.value != "auto" && element.selected != kr_cutTag.value) { - KRLogUtil.kr_d( - '用户选择了${kr_cutTag.value}但实际是${element.selected},更新选择', - tag: 'HomeController'); - - kr_selectNode(kr_cutTag.value); - - return; + // 🔧 关键修复:仅更新 UI 状态,不要触发重新选择,避免死循环 + // 更新 kr_cutSeletedTag 以反映实际选中的节点 + if (element.selected.isNotEmpty) { + kr_cutSeletedTag.value = element.selected; } // 如果用户手动选择了节点(不是auto) @@ -801,25 +788,13 @@ class KRHomeController extends GetxController with WidgetsBindingObserver { KRLogUtil.kr_d( '处理手动模式 - 选择: ${element.selected}', tag: 'HomeController'); - // 如果当前选择与用户选择不同,更新选择 - if (kr_cutTag.value != element.selected) { - // 检查选择的节点是否有效 - if (_kr_isValidLatency(kr_cutTag.value)) { - kr_selectNode(kr_cutTag.value); - // 更新延迟值 - _kr_updateNodeLatency(element); - } else { - // 如果选择的节点无效,尝试选择延迟最小的节点 - _kr_selectBestLatencyNode(element.items); - } - } else { - kr_cutSeletedTag.value = element.selected; - // 更新延迟值 - _kr_updateNodeLatency(element); - kr_currentNodeName.value = - kr_truncateText(element.selected, maxLength: 25); - // kr_moveToSelectedNode(); - } + // 🔧 关键修复:仅更新 UI 状态,不要重新选择节点,避免死循环 + kr_cutSeletedTag.value = element.selected; + // 更新延迟值 + _kr_updateNodeLatency(element); + kr_currentNodeName.value = + kr_truncateText(element.selected, maxLength: 25); + // kr_moveToSelectedNode(); } catch (e) { KRLogUtil.kr_e('处理手动模式出错: $e', tag: 'HomeController'); }