c56f0a0f7f
问题描述: - 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)