feat: 退出登录增加vpn是否连接判断

This commit is contained in:
speakeloudest 2026-01-12 20:34:11 -08:00
parent 1b996f0c53
commit bfa67e8a73

View File

@ -20,6 +20,9 @@ import 'package:kaer_with_panels/app/modules/kr_home/controllers/kr_home_control
import 'package:kaer_with_panels/app/widgets/dialogs/hi_dialog.dart'; import 'package:kaer_with_panels/app/widgets/dialogs/hi_dialog.dart';
import 'package:kaer_with_panels/app/common/app_config.dart'; import 'package:kaer_with_panels/app/common/app_config.dart';
import 'package:kaer_with_panels/app/widgets/kr_subscription_expiry_text.dart'; import 'package:kaer_with_panels/app/widgets/kr_subscription_expiry_text.dart';
import 'package:kaer_with_panels/singbox/model/singbox_status.dart';
import 'package:kaer_with_panels/app/services/singbox_imp/kr_sing_box_imp.dart';
import 'package:kaer_with_panels/app/utils/kr_log_util.dart';
class HIUserInfoView extends GetView<HIUserInfoController> { class HIUserInfoView extends GetView<HIUserInfoController> {
const HIUserInfoView({super.key}); const HIUserInfoView({super.key});
@ -75,7 +78,8 @@ class HIUserInfoView extends GetView<HIUserInfoController> {
.value; .value;
final isDeviceLogin = account != null && final isDeviceLogin = account != null &&
account.startsWith('9000'); account.startsWith('9000');
final accountText = (account ==null || isDeviceLogin) final accountText = (account == null ||
isDeviceLogin)
? '待绑定' ? '待绑定'
: '${KRAppRunData.getInstance().kr_account.value.toString()}'; : '${KRAppRunData.getInstance().kr_account.value.toString()}';
return Text( return Text(
@ -316,6 +320,8 @@ class HIUserInfoView extends GetView<HIUserInfoController> {
cancelText: '确认', cancelText: '确认',
confirmText: '返回', confirmText: '返回',
onCancel: () async { onCancel: () async {
// vpn的连接
await _stopVpnIfRunning();
final currentDevice = final currentDevice =
controller.devices.firstWhere( controller.devices.firstWhere(
(device) => device['is_current'] == true, (device) => device['is_current'] == true,
@ -500,7 +506,7 @@ class HIUserInfoView extends GetView<HIUserInfoController> {
confirmText: KRAppRunData.getInstance().isDeviceLogin() ? '前往' : null, confirmText: KRAppRunData.getInstance().isDeviceLogin() ? '前往' : null,
cancelText: KRAppRunData.getInstance().isDeviceLogin() ? '取消' : null, cancelText: KRAppRunData.getInstance().isDeviceLogin() ? '取消' : null,
onConfirm: () { onConfirm: () {
if(KRAppRunData.getInstance().isDeviceLogin()) { if (KRAppRunData.getInstance().isDeviceLogin()) {
Get.toNamed( Get.toNamed(
Routes.MR_LOGIN, Routes.MR_LOGIN,
arguments: {'entry': 'bind_email'}, arguments: {'entry': 'bind_email'},
@ -606,4 +612,16 @@ class HIUserInfoView extends GetView<HIUserInfoController> {
return Icons.devices; return Icons.devices;
} }
} }
/// VPN如果正在运行
Future<void> _stopVpnIfRunning() async {
try {
if (KRSingBoxImp.instance.kr_status.value is SingboxStarted) {
KRLogUtil.kr_i('正在删除当前设备,先停止 VPN 连接...', tag: 'HIUserInfoView');
await KRSingBoxImp.instance.kr_stop();
}
} catch (e) {
KRLogUtil.kr_e('停止 VPN 失败: $e', tag: 'HIUserInfoView');
}
}
} }