import 'package:flutter/services.dart'; /// 与官方 MobileIMSDK 对齐的生命周期:登录前 init,退出 release。 /// Android 走 MethodChannel;Windows/Linux 无原生插件时回落到 Dart TCP。 class ImBridge { static const _ch = MethodChannel('com.fysxkj.oa/im'); bool nativeReady = false; String engine = 'dart-tcp'; Future init() async { try { final r = await _ch.invokeMethod('init'); nativeReady = r?['ok'] == true || r?['initialized'] == true; engine = '${r?['engine'] ?? 'dart-tcp'}'; } on MissingPluginException { nativeReady = false; engine = 'dart-tcp'; } catch (_) { nativeReady = false; engine = 'dart-tcp'; } } Future release() async { try { await _ch.invokeMethod('release'); } catch (_) {} nativeReady = false; } Future status() async { try { final r = await _ch.invokeMethod('engine'); if (r != null && r.isNotEmpty) engine = r; } catch (_) {} return engine; } }