Browse Source

优化邀请

dev-2.0
王子贤 1 month ago
parent
commit
fc622fc955
3 changed files with 196 additions and 8 deletions
  1. 2
      lib/controller/discover/room_controller.dart
  2. 200
      lib/im/im_manager.dart
  3. 2
      lib/widget/live/live_room_invitation_list.dart

2
lib/controller/discover/room_controller.dart

@ -448,7 +448,7 @@ class RoomController extends GetxController with WidgetsBindingObserver {
SmartDialog.showToast(message);
}
} catch (e) {
SmartDialog.showToast('创建频道异常:$e');
debugPrint('创建频道异常:$e');
}
}

200
lib/im/im_manager.dart

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:dating_touchme_app/extension/ex_widget.dart';
import 'package:dating_touchme_app/rtc/rtm_manager.dart';
import 'package:dating_touchme_app/widget/live/live_recharge_popup.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@ -240,6 +241,197 @@ class IMManager {
if(message.body.type == MessageType.CUSTOM){
final body = message.body as EMCustomMessageBody;
if(body.event == "live_room_invite"){
// RoomController
final roomController = Get.isRegistered<RoomController>()
? Get.find<RoomController>()
: Get.put(RoomController());
final currentChannelId = RTCManager.instance.currentChannelId;
print([{"userId": GlobalData().userData?.id, "uid": roomController.rtcChannel.value?.uid}]);
print('currentChannelId != null && currentChannelId == body.params?["channelId"]');
if(currentChannelId != null && currentChannelId == body.params?["channelId"]){
if(roomController.rtcChannelDetail.value?.maleInfo == null && GlobalData().userData?.genderCode == 0 && roomController.currentRole != CurrentRole.broadcaster ||
roomController.rtcChannelDetail.value?.femaleInfo == null && GlobalData().userData?.genderCode == 1 && roomController.currentRole != CurrentRole.broadcaster ||
roomController.isLive.value && roomController.currentRole != CurrentRole.broadcaster && !roomController.isLive.value){
roomController.setDialogDismiss(true);
SmartDialog.show(
alignment: Alignment.center,
maskColor: Colors.black.withOpacity(0.5),
onDismiss: () {
roomController.setDialogDismiss(false);
},
builder: (context) {
// return LiveRoomGuestListDialog(
// initialTab: isMaleSeat ? 1 : 0, // 0: , 1:
// );
return ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(16.w)),
child: Material(
child: Stack(
children: [
Container(
width: 311.w,
height: 210.w,
color: Colors.white,
padding: EdgeInsets.only(
top: 53.w,
left: 23.w,
right: 23.w,
bottom: 20.w
),
child: Column(
children: [
Text(
"主持人邀请您视频连麦",
style: TextStyle(
fontSize: 21.w,
color: const Color.fromRGBO(117, 98, 249, 1),
fontWeight: FontWeight.w500
),
),
SizedBox(height: 15.w,),
if(GlobalData().userData?.genderCode == 0) Text(
"有相亲卡的用户免费",
style: TextStyle(
fontSize: 12.w,
color: const Color.fromRGBO(87, 87, 87, 1),
fontWeight: FontWeight.w500
),
),
SizedBox(height: 28.w,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
width: 128.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(237, 237, 237, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesHangUpIcon,
width: 26.w,
height: 26.w,
),
SizedBox(width: 5.w,),
Text(
"拒绝",
style: TextStyle(
fontSize: 15.w
),
)
],
),
).onTap((){
//
FocusScope.of(context).unfocus();
// overlay
SmartDialog.dismiss();
roomController.setDialogDismiss(false);
}),
Container(
width: 128.w,
height: 40.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(12.w)),
color: const Color.fromRGBO(117, 98, 249, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesAnswerIcon,
width: 18.w,
height: 13.w,
),
SizedBox(width: 5.w,),
Text(
"接受",
style: TextStyle(
fontSize: 15.w,
color: Colors.white
),
)
],
),
).onTap(() async {
//
FocusScope.of(context).unfocus();
// overlay
SmartDialog.dismiss();
roomController.setDialogDismiss(false);
//
if (!roomController.isLive.value) {
final userData = GlobalData().userData;
final isMale = userData?.genderCode == 0;
if (isMale) {
final cardNum = roomController.linkMicCard.value?.num ?? 0;
// "上麦20玫瑰"20
if (cardNum == 0 && roomController.roseCount.value < 20) {
roomController.setDialogDismiss(true);
SmartDialog.show(
alignment: Alignment.bottomCenter,
maskColor: Colors.black.withOpacity(0.5),
onDismiss: (){
roomController.setDialogDismiss(false);
},
builder: (_) => const LiveRechargePopup(),
);
return;
}
}
}
if(roomController.isLive.value){
await roomController.leaveChat();
}else{
await roomController.joinChat(GlobalData().userData?.genderCode == 0 ? CurrentRole.maleAudience : CurrentRole.femaleAudience);
}
}),
],
)
],
),
),
Positioned(
top: 0,
left: 0,
child: Container(
padding: EdgeInsets.symmetric(vertical: 5.w, horizontal: 15.w),
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(16.w),
bottomRight: Radius.circular(16.w),
),
color: const Color.fromRGBO(117, 98, 249, 1)
),
child: Text(
GlobalData().userData?.genderCode == 0 ? "20玫瑰" : "免费",
style: TextStyle(
fontSize: 14.w,
color: Colors.white,
fontWeight: FontWeight.w500
),
),
),
)
],
),
),
);
},
);
}
return;
}
SmartDialog.show(
alignment: Alignment.center,
maskColor: Colors.black.withOpacity(0.5),
@ -255,7 +447,7 @@ class IMManager {
child: Material(
child: Container(
width: 311.w,
height: 305.w,
height: 308.w,
color: Colors.white,
padding: EdgeInsets.only(
top: 28.w,
@ -473,18 +665,12 @@ class IMManager {
// overlay
SmartDialog.dismiss();
// ID
final currentChannelId = RTCManager.instance.currentChannelId;
//
if (Get.isRegistered<OverlayController>()) {
final overlayController = Get.find<OverlayController>();
overlayController.hide();
}
// RoomController
final roomController = Get.isRegistered<RoomController>()
? Get.find<RoomController>()
: Get.put(RoomController());
// ID一致
if (currentChannelId != null && currentChannelId == body.params?["channelId"]) {
// LiveRoomPage LiveRoomPage

2
lib/widget/live/live_room_invitation_list.dart

@ -201,6 +201,7 @@ class _LiveRoomInvitationListState extends State<LiveRoomInvitationList> with Ti
// overlay
SmartDialog.dismiss();
_roomController.setDialogDismiss(false);
_roomController.tab.value = 0;
}),
Container(
width: 170.w,
@ -228,6 +229,7 @@ class _LiveRoomInvitationListState extends State<LiveRoomInvitationList> with Ti
SmartDialog.dismiss();
_roomController.setDialogDismiss(false);
selectUserId.clear();
_roomController.tab.value = 0;
})
],
),

Loading…
Cancel
Save