|
|
@ -2,7 +2,6 @@ import 'dart:convert'; |
|
|
|
|
|
|
|
|
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; |
|
|
import 'package:agora_rtc_engine/agora_rtc_engine.dart'; |
|
|
import 'package:dating_touchme_app/controller/global.dart'; |
|
|
import 'package:dating_touchme_app/controller/global.dart'; |
|
|
import 'package:dating_touchme_app/controller/discover/svga_player_manager.dart'; |
|
|
|
|
|
import 'package:dating_touchme_app/model/live/gift_product_model.dart'; |
|
|
import 'package:dating_touchme_app/model/live/gift_product_model.dart'; |
|
|
import 'package:dating_touchme_app/model/rtc/rtc_channel_data.dart'; |
|
|
import 'package:dating_touchme_app/model/rtc/rtc_channel_data.dart'; |
|
|
import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart'; |
|
|
import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart'; |
|
|
@ -10,6 +9,7 @@ import 'package:dating_touchme_app/network/network_service.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtc_manager.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtc_manager.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtm_manager.dart'; |
|
|
import 'package:dating_touchme_app/rtc/rtm_manager.dart'; |
|
|
import 'package:dating_touchme_app/service/live_chat_message_service.dart'; |
|
|
import 'package:dating_touchme_app/service/live_chat_message_service.dart'; |
|
|
|
|
|
import 'package:flutter/material.dart'; |
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:get/get.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
import 'package:permission_handler/permission_handler.dart'; |
|
|
@ -17,6 +17,8 @@ import 'package:permission_handler/permission_handler.dart'; |
|
|
import '../../model/live/live_chat_message.dart'; |
|
|
import '../../model/live/live_chat_message.dart'; |
|
|
import '../../pages/mine/real_name_page.dart'; |
|
|
import '../../pages/mine/real_name_page.dart'; |
|
|
import '../../pages/setting/match_league_page.dart'; |
|
|
import '../../pages/setting/match_league_page.dart'; |
|
|
|
|
|
import '../../pages/setting/match_spread_page.dart'; |
|
|
|
|
|
import 'svga_player_manager.dart'; |
|
|
|
|
|
|
|
|
// 当前角色 |
|
|
// 当前角色 |
|
|
enum CurrentRole { |
|
|
enum CurrentRole { |
|
|
@ -28,7 +30,8 @@ enum CurrentRole { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/// 直播房间相关控制器 |
|
|
/// 直播房间相关控制器 |
|
|
class RoomController extends GetxController { |
|
|
|
|
|
|
|
|
class RoomController extends GetxController with WidgetsBindingObserver { |
|
|
|
|
|
|
|
|
RoomController({NetworkService? networkService}) |
|
|
RoomController({NetworkService? networkService}) |
|
|
: _networkService = networkService ?? Get.find<NetworkService>(); |
|
|
: _networkService = networkService ?? Get.find<NetworkService>(); |
|
|
|
|
|
|
|
|
@ -36,7 +39,6 @@ class RoomController extends GetxController { |
|
|
CurrentRole currentRole = CurrentRole.normalUser; |
|
|
CurrentRole currentRole = CurrentRole.normalUser; |
|
|
var isLive = false.obs; |
|
|
var isLive = false.obs; |
|
|
var matchmakerFlag = false.obs; |
|
|
var matchmakerFlag = false.obs; |
|
|
|
|
|
|
|
|
/// 当前频道信息 |
|
|
/// 当前频道信息 |
|
|
final Rxn<RtcChannelData> rtcChannel = Rxn<RtcChannelData>(); |
|
|
final Rxn<RtcChannelData> rtcChannel = Rxn<RtcChannelData>(); |
|
|
final Rxn<RtcChannelDetail> rtcChannelDetail = Rxn<RtcChannelDetail>(); |
|
|
final Rxn<RtcChannelDetail> rtcChannelDetail = Rxn<RtcChannelDetail>(); |
|
|
@ -48,14 +50,14 @@ class RoomController extends GetxController { |
|
|
final RxList<GiftProductModel> giftProducts = <GiftProductModel>[].obs; |
|
|
final RxList<GiftProductModel> giftProducts = <GiftProductModel>[].obs; |
|
|
|
|
|
|
|
|
/// 消息服务实例 |
|
|
/// 消息服务实例 |
|
|
final LiveChatMessageService _messageService = |
|
|
|
|
|
LiveChatMessageService.instance; |
|
|
|
|
|
|
|
|
final LiveChatMessageService _messageService = LiveChatMessageService.instance; |
|
|
|
|
|
|
|
|
// matchmakerFlag |
|
|
// matchmakerFlag |
|
|
|
|
|
|
|
|
@override |
|
|
@override |
|
|
void onInit() { |
|
|
void onInit() { |
|
|
super.onInit(); |
|
|
super.onInit(); |
|
|
|
|
|
WidgetsBinding.instance.addObserver(this); |
|
|
matchmakerFlag.value = GlobalData().userData!.matchmakerFlag!; |
|
|
matchmakerFlag.value = GlobalData().userData!.matchmakerFlag!; |
|
|
// 注册消息监听 |
|
|
// 注册消息监听 |
|
|
_registerMessageListener(); |
|
|
_registerMessageListener(); |
|
|
@ -63,9 +65,32 @@ class RoomController extends GetxController { |
|
|
loadGiftProducts(); |
|
|
loadGiftProducts(); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@override |
|
|
|
|
|
void didChangeAppLifecycleState(AppLifecycleState state) { |
|
|
|
|
|
if(state == AppLifecycleState.resumed){ |
|
|
|
|
|
// print('_handleAppResumed'); |
|
|
|
|
|
} |
|
|
|
|
|
switch (state) { |
|
|
|
|
|
case AppLifecycleState.resumed: |
|
|
|
|
|
print('_handleAppResumed'); |
|
|
|
|
|
break; |
|
|
|
|
|
case AppLifecycleState.paused: |
|
|
|
|
|
// _handleAppPaused(); |
|
|
|
|
|
print('_handleAppPaused'); |
|
|
|
|
|
break; |
|
|
|
|
|
case AppLifecycleState.inactive: |
|
|
|
|
|
// _handleAppInactive(); |
|
|
|
|
|
print('_handleAppInactive'); |
|
|
|
|
|
break; |
|
|
|
|
|
default: |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@override |
|
|
@override |
|
|
void onClose() { |
|
|
void onClose() { |
|
|
super.onClose(); |
|
|
super.onClose(); |
|
|
|
|
|
WidgetsBinding.instance.removeObserver(this); |
|
|
// 移除消息监听 |
|
|
// 移除消息监听 |
|
|
_messageService.unregisterMessageListener(); |
|
|
_messageService.unregisterMessageListener(); |
|
|
} |
|
|
} |
|
|
@ -109,7 +134,7 @@ class RoomController extends GetxController { |
|
|
|
|
|
|
|
|
/// 调用接口创建 RTC 频道 |
|
|
/// 调用接口创建 RTC 频道 |
|
|
Future<void> createRtcChannel() async { |
|
|
Future<void> createRtcChannel() async { |
|
|
if (isLive.value) { |
|
|
|
|
|
|
|
|
if(isLive.value){ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
final granted = await _ensureRtcPermissions(); |
|
|
final granted = await _ensureRtcPermissions(); |
|
|
@ -504,13 +529,15 @@ class RoomController extends GetxController { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void registerMatch() { |
|
|
|
|
|
if (GlobalData().userData!.identityCard != null && |
|
|
|
|
|
GlobalData().userData!.identityCard!.isNotEmpty) { |
|
|
|
|
|
Get.to(() => MatchLeaguePage()); |
|
|
|
|
|
|
|
|
void registerMatch() async { |
|
|
|
|
|
if(GlobalData().userData!.identityCard != null && GlobalData().userData!.identityCard!.isNotEmpty){ |
|
|
|
|
|
await Get.to(() => MatchSpreadPage()); |
|
|
} else { |
|
|
} else { |
|
|
SmartDialog.showToast('请先进行实名认证'); |
|
|
SmartDialog.showToast('请先进行实名认证'); |
|
|
Get.to(() => RealNamePage(type: 1)); |
|
|
|
|
|
|
|
|
await Get.to(() => RealNamePage(type: 1)); |
|
|
} |
|
|
} |
|
|
|
|
|
print(455); |
|
|
|
|
|
matchmakerFlag.value = GlobalData().userData!.matchmakerFlag!; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |