Rust c56f0a0f7f 🔧 fix: 解决节点切换UI/后台不同步问题 - 实现统一的异步节点切换机制
问题描述:
- UI快速显示切换到新节点,但后台代理仍使用原节点
- 根本原因:异步操作未等待完成,导致竞态条件
- UI更新(<5ms) vs 后台操作(100-500ms) 时间差导致不同步

解决方案 - 完全重构(方案1):
1️⃣ 新增统一的节点切换方法 kr_performNodeSwitch()
   - 包含完整的异步/等待机制
   - 显示加载状态反馈
   - 失败时自动恢复
   - 返回success/failure标识

2️⃣ 修改所有节点选择点 (4个InkWell位置)
   - 从同步改为async/await
   - 调用统一的kr_performNodeSwitch()方法
   - 仅在成功后关闭列表窗口

3️⃣ 简化kr_selectNode()方法
   - 从70行减少到3行
   - 现在只是委托给kr_performNodeSwitch()
   - 保持向后兼容性

修改文件:
- lib/app/modules/kr_home/controllers/kr_home_controller.dart
  * 新增kr_performNodeSwitch()方法(+93行)
  * 简化kr_selectNode()方法(-67行)
  * 新增KRCommonUtil导入

- lib/app/modules/kr_home/views/kr_home_node_list_view.dart
  * 修改4个InkWell的onTap处理
  * 添加async/await和错误处理
  * 全部更新为统一的节点切换调用

编译验证:  通过
- kr_home_controller.dart: 无错误
- kr_home_node_list_view.dart: 无新增错误

测试验证:
-  UI显示加载状态
-  等待后台完成后关闭列表
-  失败时显示错误提示并恢复
-  实际代理确实切换到新节点
-  无重复调用问题

(cherry picked from commit c0c86dcb43d69e452d729a82a07db4cd34597082)
2025-10-31 19:37:21 -07:00
..
2025-10-13 18:08:02 +08:00
2025-10-13 18:08:02 +08:00
2025-10-13 18:08:02 +08:00
2025-10-30 23:31:05 -07:00