import 'package:logger/logger.dart'; import 'package:tencent_cloud_chat_sdk/enum/V2TimSDKListener.dart'; import 'package:tencent_cloud_chat_sdk/enum/log_level_enum.dart'; import 'package:tencent_cloud_chat_sdk/models/v2_tim_user_full_info.dart'; import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart'; final logger = Logger(); class ImCore { static bool _isInitialized = false; static Future init({required int sdkAppId}) async { if (_isInitialized) return true; final res = await TencentImSDKPlugin.v2TIMManager.initSDK( sdkAppID: sdkAppId, loglevel: LogLevelEnum.V2TIM_LOG_ERROR, listener: V2TimSDKListener( onConnectSuccess: () { logger.i("IM连接成功"); }, onConnectFailed: (code, error) => logger.e("IM连接失败: $code $error"), onKickedOffline: () => logger.w("IM被踢下线"), onUserSigExpired: () => logger.w("UserSig 过期"), onSelfInfoUpdated: (V2TimUserFullInfo info) { logger.i("用户信息更新: ${info.toJson()}"); }, ), ); if (res.code == 0) { _isInitialized = true; logger.i("IM SDK 初始化成功"); return true; } else { logger.e("IM SDK 初始化失败: ${res.code} - ${res.desc}"); return false; } } // 反向初始化 static Future unInit() async { if (_isInitialized) { final res = await TencentImSDKPlugin.v2TIMManager.unInitSDK(); if (res.code == 0) { logger.i("IM SDK 已反初始化"); } else { logger.e("IM SDK 反初始化失败: ${res.code} - ${res.desc}"); } _isInitialized = false; } } }