diff --git a/wgshare/assets/images/2.0x/meeting_main_share_currently_n.png b/wgshare/assets/images/2.0x/meeting_main_share_currently_n.png new file mode 100644 index 0000000..6d6d573 Binary files /dev/null and b/wgshare/assets/images/2.0x/meeting_main_share_currently_n.png differ diff --git a/wgshare/assets/images/3.0x/meeting_main_share_currently_n.png b/wgshare/assets/images/3.0x/meeting_main_share_currently_n.png new file mode 100644 index 0000000..239c409 Binary files /dev/null and b/wgshare/assets/images/3.0x/meeting_main_share_currently_n.png differ diff --git a/wgshare/assets/images/meeting_main_share_currently_n.png b/wgshare/assets/images/meeting_main_share_currently_n.png new file mode 100644 index 0000000..b7a8aea Binary files /dev/null and b/wgshare/assets/images/meeting_main_share_currently_n.png differ diff --git a/wgshare/lib/common/models/meeting_room_user.dart b/wgshare/lib/common/models/meeting_room_user.dart index 5ec6707..e53a3be 100644 --- a/wgshare/lib/common/models/meeting_room_user.dart +++ b/wgshare/lib/common/models/meeting_room_user.dart @@ -39,7 +39,10 @@ class MeetingRoomUser extends Object{ @JsonKey(name: 'volume') double? volume = 0.0; - MeetingRoomUser(this.uid,this.connectId,this.account,this.enableMicr,this.enableCamera,this.screenShareId,this.userName,this.roleId,this.roleName,this.isRoomManager,this.volume); + @JsonKey(name: 'enableShare') + bool? enableShare; + + MeetingRoomUser(this.uid,this.connectId,this.account,this.enableMicr,this.enableCamera,this.screenShareId,this.userName,this.roleId,this.roleName,this.isRoomManager,this.volume,this.enableShare); factory MeetingRoomUser.fromJson(Map srcJson) => _$MeetingRoomUserFromJson(srcJson); diff --git a/wgshare/lib/pages/metting/meeting_main_logic.dart b/wgshare/lib/pages/metting/meeting_main_logic.dart index 4fff037..60ce81e 100644 --- a/wgshare/lib/pages/metting/meeting_main_logic.dart +++ b/wgshare/lib/pages/metting/meeting_main_logic.dart @@ -232,13 +232,30 @@ class MeetingMainLogic extends GetxController with RequestToolMixin { } } } else { - // 共享屏幕(此版本不做) - /*if(state.remoteUid.value == UserStore.to.userInfoEntity.value!.screenShareId){ + if(state.remoteUid.value == UserStore.to.userInfoEntity.value!.screenShareId){ // 如果是自己在共享 }else{ - // 如果是别人在共享,切换页面到视频状态 - changePageState(1); - }*/ + // 共享不是自己 + // 判断当前会议室是否存在共享成员 + var isCurrentUserIsCamera = false; + for (var i = 0; i < state.cacheUsers.value.length; i++) { + if (state.remoteUid.value == state.cacheUsers.value[i].screenShareId) { + state.cacheUsers.value[i].enableShare = true; + isCurrentUserIsCamera = true; + } + } + + if (isCurrentUserIsCamera == true) { + // 当前会议室存在全员观看主播时,切换页面到视频状态 + debugPrint("wgs输出===:当前会议室存在全员观看主播时,切换页面到视频状态"); + changePageState(1); + } else { + // 当前会议室不存在全员观看主播时,设置主播ID为空并切换页面到视频状态 + debugPrint("wgs输出===:当前会议室不存在全员观看主播时,设置主播ID为空并切换页面到视频状态"); + state.remoteUid.value = ""; + changePageState(1); + } + } } } diff --git a/wgshare/lib/pages/metting/meeting_main_view.dart b/wgshare/lib/pages/metting/meeting_main_view.dart index 305c494..d096a02 100644 --- a/wgshare/lib/pages/metting/meeting_main_view.dart +++ b/wgshare/lib/pages/metting/meeting_main_view.dart @@ -279,8 +279,8 @@ class MeetingMainPageState extends State { child: Container( width: 200.w, height: 40.h, - margin: - const EdgeInsets.only(left: 20, bottom: 40), + margin: const EdgeInsets.only( + left: 20, bottom: 40), padding: const EdgeInsets.only(left: 20), decoration: BoxDecoration( borderRadius: const BorderRadius.only( @@ -293,7 +293,8 @@ class MeetingMainPageState extends State { color: ColorUtil.Color_99_111_158), ), child: Row( - crossAxisAlignment: CrossAxisAlignment.center, + crossAxisAlignment: + CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.start, children: [ Image.asset( @@ -315,26 +316,28 @@ class MeetingMainPageState extends State { Get.bottomSheet( isScrollControlled: true, chatBottomSheet(context)); - Future.delayed(const Duration(milliseconds: 100), - () { - state.chatController.jumpTo(state - .chatController.position.maxScrollExtent); - }); + Future.delayed( + const Duration(milliseconds: 100), () { + state.chatController.jumpTo(state + .chatController + .position + .maxScrollExtent); + }); }, ), - Visibility( visible: state.isSpeak.value, child: GestureDetector( child: Container( width: 82.w, height: 40.h, - margin: const EdgeInsets.only(left: 12, bottom: 40,right: 20), + margin: const EdgeInsets.only( + left: 12, bottom: 40, right: 20), alignment: Alignment.center, decoration: const BoxDecoration( - borderRadius: BorderRadius.all(Radius.circular(99)), - color: ColorUtil.Color_255_69_69 - ), + borderRadius: BorderRadius.all( + Radius.circular(99)), + color: ColorUtil.Color_255_69_69), child: Text( '结束发言', style: TextStyle( @@ -417,7 +420,8 @@ class MeetingMainPageState extends State { if (state.isSpeak.value == false) { Get.bottomSheet( isScrollControlled: true, - applySpeakPermissionBottomSheet(context,1)); + applySpeakPermissionBottomSheet( + context, 1)); } else { if (state.isOpenMicrophone.value == false) { logic.doHttpSetMicr(true); @@ -446,7 +450,8 @@ class MeetingMainPageState extends State { Text( /*state.isSpeak.value == false ? '申请发言' - : */state.isOpenCamera.value == true + : */ + state.isOpenCamera.value == true ? "关闭视频" : "开启视频", style: TextStyle( @@ -459,7 +464,8 @@ class MeetingMainPageState extends State { if (state.isSpeak.value == false) { Get.bottomSheet( isScrollControlled: true, - applySpeakPermissionBottomSheet(context,2)); + applySpeakPermissionBottomSheet( + context, 2)); } else { if (state.isOpenCamera.value == true) { logic.doHttpSetCamer(false); @@ -763,14 +769,13 @@ class MeetingMainPageState extends State { ), Expanded( child: GestureDetector( - child: Container( - color: ColorUtil.Color_57_57_57_08, - ), - onTap: (){ - logic.changeMeetingInfoState(false); - }, - ) - ) + child: Container( + color: ColorUtil.Color_57_57_57_08, + ), + onTap: () { + logic.changeMeetingInfoState(false); + }, + )) ], ), ); @@ -784,13 +789,13 @@ class MeetingMainPageState extends State { children: [ Expanded( child: GestureDetector( - child: Container( - color: ColorUtil.Color_57_57_57_08, - ), - onTap: (){ - logic.changeMeetingAudioState(false); - }, - )), + child: Container( + color: ColorUtil.Color_57_57_57_08, + ), + onTap: () { + logic.changeMeetingAudioState(false); + }, + )), Container( color: ColorUtil.Color_57_57_57_08, child: Container( @@ -809,13 +814,13 @@ class MeetingMainPageState extends State { ), Expanded( child: GestureDetector( - child:Container( - color: ColorUtil.Color_57_57_57_08, - ), - onTap: (){ - logic.changeMeetingAudioState(false); - }, - )) + child: Container( + color: ColorUtil.Color_57_57_57_08, + ), + onTap: () { + logic.changeMeetingAudioState(false); + }, + )) ], ), ); @@ -874,7 +879,8 @@ class MeetingMainPageState extends State { } /// 申请发言权限底部弹窗 - Widget applySpeakPermissionBottomSheet(BuildContext context, int defaulOpenState) { + Widget applySpeakPermissionBottomSheet( + BuildContext context, int defaulOpenState) { return Container( height: 240.h, color: ColorUtil.Color_7_9_11, @@ -1070,13 +1076,15 @@ class MeetingMainPageState extends State { Container( margin: const EdgeInsets.only(top: 18, left: 16, right: 16, bottom: 16), - child: Text( - '会议中(${state.users.value.length})', - style: TextStyle( - fontSize: 14.sp, - fontWeight: FontWeight.w500, - color: ColorUtil.Color_85_117_242), - ), + child: GetBuilder(builder: (controll) { + return Text( + '会议中(${state.users.value.length})', + style: TextStyle( + fontSize: 14.sp, + fontWeight: FontWeight.w500, + color: ColorUtil.Color_85_117_242), + ); + }), ), Expanded( child: ScrollConfiguration( @@ -1175,7 +1183,10 @@ class MeetingMainPageState extends State { children: [ Container( child: Image.asset( - 'assets/images/meeting_main_share_currently.png', + state.users.value[index].enableShare == + true + ? 'assets/images/meeting_main_share_currently.png' + : 'assets/images/meeting_main_share_currently_n.png', width: 17.w, height: 17.h, ), @@ -1517,7 +1528,9 @@ class MeetingMainPageState extends State { canvas: VideoCanvas( uid: int.tryParse(state.remoteUid.value), setupMode: VideoViewSetupMode.videoViewSetupAdd, - renderMode: state.remoteUid.value.length == 9 ? RenderModeType.renderModeFit : RenderModeType.renderModeHidden), + renderMode: state.remoteUid.value.length == 9 + ? RenderModeType.renderModeFit + : RenderModeType.renderModeHidden), ), ) : Container( @@ -1677,11 +1690,14 @@ class MeetingMainPageState extends State { shapePath: ViewSvgPath.getMicrpphonePath()), ), - Text( - state.cacheUsers.value[index].userName, - style: TextStyle( - fontSize: 12.sp, - color: ColorUtil.Color_255_255_255), + SizedBox( + width: 70, + child: Text( + state.cacheUsers.value[index].userName, + style: TextStyle( + fontSize: 12.sp, + color: ColorUtil.Color_255_255_255), + ) ) ], ) @@ -1694,11 +1710,14 @@ class MeetingMainPageState extends State { width: 20.w, height: 20.h, ), - Text( - state.cacheUsers.value[index].userName, - style: TextStyle( - fontSize: 12.sp, - color: ColorUtil.Color_255_255_255), + SizedBox( + width: 70, + child: Text( + state.cacheUsers.value[index].userName, + style: TextStyle( + fontSize: 12.sp, + color: ColorUtil.Color_255_255_255), + ) ) ], ), diff --git a/wgshare/lib/pages/metting/voice/meeting_main_voice_view.dart b/wgshare/lib/pages/metting/voice/meeting_main_voice_view.dart index cf83781..2ffa27c 100644 --- a/wgshare/lib/pages/metting/voice/meeting_main_voice_view.dart +++ b/wgshare/lib/pages/metting/voice/meeting_main_voice_view.dart @@ -72,11 +72,16 @@ class MeetingMainVoiceComponent extends StatelessWidget { shapePath: ViewSvgPath.getMicrpphonePath() ), ), - Text( - users[index].userName, - style: TextStyle( - fontSize: 12.sp, - color: ColorUtil.Color_255_255_255), + SizedBox( + width: 70, + child: Text( + users[index].userName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 12.sp, + color: ColorUtil.Color_255_255_255), + ), ) ], ) @@ -89,11 +94,16 @@ class MeetingMainVoiceComponent extends StatelessWidget { width: 20.w, height: 20.h, ), - Text( - users[index].userName, - style: TextStyle( - fontSize: 12.sp, - color: ColorUtil.Color_255_255_255), + SizedBox( + width: 70, + child: Text( + users[index].userName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + fontSize: 12.sp, + color: ColorUtil.Color_255_255_255), + ), ) ], ),