import 'package:agora_token_generator/agora_token_generator.dart'; import 'package:dating_touchme_app/model/rtc/rtc_channel_data.dart'; import 'package:dating_touchme_app/network/network_service.dart'; import 'package:dating_touchme_app/rtc/rtc_manager.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:get_storage/get_storage.dart'; import '../../pages/discover/live_room_page.dart'; /// 直播房间相关控制器 class RoomController extends GetxController { RoomController({NetworkService? networkService}) : _networkService = networkService ?? Get.find(); final NetworkService _networkService; /// 当前频道信息 final Rxn rtcChannel = Rxn(); /// 是否正在创建 final RxBool isLoading = false.obs; /// 调用接口创建 RTC 频道 Future createRtcChannel() async { if (isLoading.value) return ; try { isLoading.value = true; final response = await _networkService.rtcApi.createRtcChannel(); final base = response.data; if (base.isSuccess && base.data != null) { rtcChannel.value = base.data; await _joinRtcChannel(base.data!.token, base.data!.channelId, base.data!.uid); } else { final message = base.message.isNotEmpty ? base.message : '创建频道失败'; SmartDialog.showToast(message); } } catch (e) { SmartDialog.showToast('创建频道异常:$e'); } finally { isLoading.value = false; } } Future _joinRtcChannel(String token, String channelName, int uid) async { try { await RTCManager.instance.joinChannel( token: token, channelId: channelName, uid: uid ); } catch (e) { SmartDialog.showToast('加入频道失败:$e'); } } }