feat: 修复节点切换bug
This commit is contained in:
parent
d63b3bfc3c
commit
17860e333c
@ -1504,6 +1504,7 @@ class KRHomeController extends GetxController with WidgetsBindingObserver {
|
|||||||
},
|
},
|
||||||
(_) {
|
(_) {
|
||||||
// 切换成功
|
// 切换成功
|
||||||
|
KRSingBoxImp.instance.kr_startNodeSelectionMonitor(tag);
|
||||||
KRLogUtil.kr_i('✅ selectOutbound 调用成功', tag: 'HomeController');
|
KRLogUtil.kr_i('✅ selectOutbound 调用成功', tag: 'HomeController');
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -1635,9 +1635,7 @@ class KRSingBoxImp {
|
|||||||
KRLogUtil.kr_i('🛑 停止 SingBox 服务...', tag: 'SingBox');
|
KRLogUtil.kr_i('🛑 停止 SingBox 服务...', tag: 'SingBox');
|
||||||
|
|
||||||
// 取消节点选择监控定时器
|
// 取消节点选择监控定时器
|
||||||
_nodeSelectionTimer?.cancel();
|
kr_resetNodeSelectionMonitor();
|
||||||
_nodeSelectionTimer = null;
|
|
||||||
KRLogUtil.kr_i('✅ 节点选择监控已停止', tag: 'SingBox');
|
|
||||||
|
|
||||||
await Future.delayed(const Duration(milliseconds: 100));
|
await Future.delayed(const Duration(milliseconds: 100));
|
||||||
|
|
||||||
@ -1977,7 +1975,22 @@ class KRSingBoxImp {
|
|||||||
|
|
||||||
// 🔄 如果用户选择了具体节点(不是 auto),启动定期检查和重新选择
|
// 🔄 如果用户选择了具体节点(不是 auto),启动定期检查和重新选择
|
||||||
// 这是为了防止 urltest 自动覆盖用户的手动选择
|
// 这是为了防止 urltest 自动覆盖用户的手动选择
|
||||||
_nodeSelectionTimer?.cancel();
|
kr_startNodeSelectionMonitor(tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 配合文件地址
|
||||||
|
|
||||||
|
Directory get directory =>
|
||||||
|
Directory(p.join(kr_configDics.workingDir.path, "configs"));
|
||||||
|
File _file(String fileName) {
|
||||||
|
return File(p.join(directory.path, "$fileName.json"));
|
||||||
|
}
|
||||||
|
|
||||||
|
File _tempFile(String fileName) => _file("$fileName.tmp");
|
||||||
|
|
||||||
|
/// 启动节点选择监控定时器,防止用户手动选择被自动策略覆盖
|
||||||
|
void kr_startNodeSelectionMonitor(String tag) {
|
||||||
|
kr_resetNodeSelectionMonitor();
|
||||||
if (tag != 'auto') {
|
if (tag != 'auto') {
|
||||||
KRLogUtil.kr_i('🔁 启动节点选择监控,防止被 auto 覆盖', tag: 'SingBox');
|
KRLogUtil.kr_i('🔁 启动节点选择监控,防止被 auto 覆盖', tag: 'SingBox');
|
||||||
_nodeSelectionTimer =
|
_nodeSelectionTimer =
|
||||||
@ -1997,16 +2010,13 @@ class KRSingBoxImp {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 配合文件地址
|
/// 重置并停止节点选择监控定时器
|
||||||
|
void kr_resetNodeSelectionMonitor() {
|
||||||
Directory get directory =>
|
_nodeSelectionTimer?.cancel();
|
||||||
Directory(p.join(kr_configDics.workingDir.path, "configs"));
|
_nodeSelectionTimer = null;
|
||||||
File _file(String fileName) {
|
KRLogUtil.kr_i('✅ 节点选择监控已停止', tag: 'SingBox');
|
||||||
return File(p.join(directory.path, "$fileName.json"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
File _tempFile(String fileName) => _file("$fileName.tmp");
|
|
||||||
|
|
||||||
// File tempFile(String fileName) => file("$fileName.tmp");
|
// File tempFile(String fileName) => file("$fileName.tmp");
|
||||||
|
|
||||||
Future<void> kr_urlTest(String groupTag) async {
|
Future<void> kr_urlTest(String groupTag) async {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user