import 'dart:async'; import 'package:dating_touchme_app/controller/global.dart'; import 'package:dating_touchme_app/controller/message/conversation_controller.dart'; import 'package:dating_touchme_app/controller/discover/room_controller.dart'; import 'package:dating_touchme_app/controller/overlay_controller.dart'; import 'package:dating_touchme_app/im/im_manager.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/pages/main/update_dialog.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import 'package:tdesign_flutter/tdesign_flutter.dart'; import '../../generated/assets.dart'; import 'package:package_info_plus/package_info_plus.dart'; import '../../model/mine/app_version.dart'; import '../../network/user_api.dart'; class SettingController extends GetxController { final storage = GetStorage(); final appName = ''.obs; final packageName = ''.obs; final version = ''.obs; final buildNumber = ''.obs; // UserApi实例 late UserApi _userApi; @override Future onInit() async { super.onInit(); // 从全局依赖中获取UserApi _userApi = Get.find(); await getAppInfo(); } // 获取验证码 Future getAppInfo() async { try { PackageInfo packageInfo = await PackageInfo.fromPlatform(); appName.value = packageInfo.appName; packageName.value = packageInfo.packageName; version.value = packageInfo.version; buildNumber.value = packageInfo.buildNumber; } catch (e) { print('获取应用信息失败: $e'); } } Future checkVersion() async { try { final response = await _userApi.getAppVersionInfo(os: 1, code: int.parse(buildNumber.value)); if (response.data.isSuccess && response.data.data != null) { AppVersion version = response.data.data!; showDialog( context: Get.context!, builder: (context) => UpdateDialog(version: version) ); } } catch (e) { print('检测版本跟新失败: $e'); } } void logout() async { // 退出直播间 if (Get.isRegistered()) { try { final roomController = Get.find(); await roomController.leaveChannel(); } catch (e) { print('退出直播间失败: $e'); } } // 取消小窗口 if (Get.isRegistered()) { try { final overlayController = Get.find(); overlayController.hide(); // 隐藏直播房间小窗 overlayController.hideVideoCall(); // 隐藏视频通话小窗 } catch (e) { print('取消小窗口失败: $e'); } } // 先退出 IM 登录 if(IMManager.instance.isInitialized){ await IMManager.instance.logout(); } // 清除会话列表和用户信息缓存 if (Get.isRegistered()) { final conversationController = Get.find(); conversationController.clearConversations(); } // App清除本地存储,有待处理, // storage.erase(); storage.remove('userId'); storage.remove('token'); // storage.write('hasAgreedUserAgreement', true); // 清除全局数据 GlobalData().logout(); } }