🔧 fix: 修复节点切换完成后仍显示'正在连接中'状态的问题
问题描述: - 用户在已连接VPN的情况下切换节点 - 节点切换成功,但UI仍然显示"正在连接中"状态 - 原因:节点切换完成后,kr_currentNodeLatency 仍然是 -1(连接中状态) 根本原因: - kr_performNodeSwitch() 设置 kr_currentNodeLatency = -1 来显示加载状态 - 调用 await kr_selectOutbound(tag) 等待后台完成 - 但是完成后没有立即更新 kr_currentNodeLatency 为真实的延迟值 - 导致 UI 持续显示"正在连接中" 修复方案: 1. 在 kr_selectOutbound() 完成后,增加 200ms 延迟(等待活动组更新) 2. 立即调用 _kr_updateLatencyOnConnected() 获取新节点的真实延迟 3. 这样 UI 会立即从"正在连接中"变为"已连接 + 新延迟值" 修改内容: - 在 kr_performNodeSwitch() 的成功分支中 - 在 kr_moveToSelectedNode() 之后,添加延迟更新逻辑 - 调用 _kr_updateLatencyOnConnected() 来同步新节点的延迟 验证: ✅ 编译通过:No issues found! ✅ 逻辑正确:使用现有的 _kr_updateLatencyOnConnected() 方法 ✅ 无新增依赖:只是调用现有方法 (cherry picked from commit 9ddf6bab2c2f09df30fc1fe7d085058508e6ff1c)
This commit is contained in:
parent
90a3d57bb1
commit
16a1ed789e
@ -1168,6 +1168,11 @@ class KRHomeController extends GetxController with WidgetsBindingObserver {
|
||||
kr_updateConnectionInfo();
|
||||
kr_moveToSelectedNode();
|
||||
|
||||
// 🔧 关键修复:节点切换完成后,立即获取新节点的延迟值
|
||||
// 这样可以避免UI继续显示"正在连接"状态
|
||||
await Future.delayed(const Duration(milliseconds: 200)); // 等待活动组更新
|
||||
_kr_updateLatencyOnConnected();
|
||||
|
||||
KRLogUtil.kr_i('✅ 节点切换成功: $tag', tag: 'HomeController');
|
||||
return true;
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user