diff --git a/wgshare/assets/images/2.0x/meeting_main_receiver.png b/wgshare/assets/images/2.0x/meeting_main_receiver.png new file mode 100644 index 0000000..d7d8e0d Binary files /dev/null and b/wgshare/assets/images/2.0x/meeting_main_receiver.png differ diff --git a/wgshare/assets/images/2.0x/meeting_main_sp.png b/wgshare/assets/images/2.0x/meeting_main_sp.png new file mode 100644 index 0000000..cdc0846 Binary files /dev/null and b/wgshare/assets/images/2.0x/meeting_main_sp.png differ diff --git a/wgshare/assets/images/2.0x/meeting_main_speaker.png b/wgshare/assets/images/2.0x/meeting_main_speaker.png new file mode 100644 index 0000000..0c321a0 Binary files /dev/null and b/wgshare/assets/images/2.0x/meeting_main_speaker.png differ diff --git a/wgshare/assets/images/2.0x/meeting_main_sqfy.png b/wgshare/assets/images/2.0x/meeting_main_sqfy.png new file mode 100644 index 0000000..601d367 Binary files /dev/null and b/wgshare/assets/images/2.0x/meeting_main_sqfy.png differ diff --git a/wgshare/assets/images/3.0x/meeting_main_receiver.png b/wgshare/assets/images/3.0x/meeting_main_receiver.png new file mode 100644 index 0000000..1d774c6 Binary files /dev/null and b/wgshare/assets/images/3.0x/meeting_main_receiver.png differ diff --git a/wgshare/assets/images/3.0x/meeting_main_sp.png b/wgshare/assets/images/3.0x/meeting_main_sp.png new file mode 100644 index 0000000..b7dabec Binary files /dev/null and b/wgshare/assets/images/3.0x/meeting_main_sp.png differ diff --git a/wgshare/assets/images/3.0x/meeting_main_speaker.png b/wgshare/assets/images/3.0x/meeting_main_speaker.png new file mode 100644 index 0000000..7844924 Binary files /dev/null and b/wgshare/assets/images/3.0x/meeting_main_speaker.png differ diff --git a/wgshare/assets/images/3.0x/meeting_main_sqfy.png b/wgshare/assets/images/3.0x/meeting_main_sqfy.png new file mode 100644 index 0000000..24bed60 Binary files /dev/null and b/wgshare/assets/images/3.0x/meeting_main_sqfy.png differ diff --git a/wgshare/assets/images/meeting_main_receiver.png b/wgshare/assets/images/meeting_main_receiver.png new file mode 100644 index 0000000..391fcc8 Binary files /dev/null and b/wgshare/assets/images/meeting_main_receiver.png differ diff --git a/wgshare/assets/images/meeting_main_sp.png b/wgshare/assets/images/meeting_main_sp.png new file mode 100644 index 0000000..0129e3c Binary files /dev/null and b/wgshare/assets/images/meeting_main_sp.png differ diff --git a/wgshare/assets/images/meeting_main_speaker.png b/wgshare/assets/images/meeting_main_speaker.png new file mode 100644 index 0000000..68be749 Binary files /dev/null and b/wgshare/assets/images/meeting_main_speaker.png differ diff --git a/wgshare/assets/images/meeting_main_sqfy.png b/wgshare/assets/images/meeting_main_sqfy.png new file mode 100644 index 0000000..e9c38a7 Binary files /dev/null and b/wgshare/assets/images/meeting_main_sqfy.png differ diff --git a/wgshare/lib/pages/metting/meeting_main_logic.dart b/wgshare/lib/pages/metting/meeting_main_logic.dart index 5a19004..d8bbe4b 100644 --- a/wgshare/lib/pages/metting/meeting_main_logic.dart +++ b/wgshare/lib/pages/metting/meeting_main_logic.dart @@ -139,6 +139,18 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ BaseStructureResult res = await getClient().cancelSpeak(state.meetingRoomInfo.value!.id, state.meetingRoomInfo.value!.roomNum, UserStore.to.userInfoEntity.value!.uid); } + /// 设置麦克风是否静音 + void setMicrophoneOpen(bool isOpen){ + state.isOpenMicrophone.value = isOpen; + for(var i = 0; i < state.cacheUsers.value.length; i++){ + if(state.cacheUsers.value[i].uid == UserStore.to.userInfoEntity.value!.uid){ + state.cacheUsers.value[i].enableMicr = isOpen; + } + } + state.users.value = state.cacheUsers.value; + setEnableLocalAudio(isOpen); + } + /// --------------------------signalR Socket相关 /// Socket长连接 Future signalRSocket() async { @@ -194,6 +206,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ } if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){ state.isSpeak.value = true; + state.isOpenMicrophone.value = true; setEnableLocalAudio(true); } }else{ @@ -207,6 +220,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ } if(UserStore.to.userInfoEntity.value!.uid == meetingRoomUser.uid){ state.isSpeak.value = false; + state.isOpenMicrophone.value = false; setEnableLocalAudio(false); } } @@ -285,7 +299,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{ )); // 设置默认音频路由为听筒 - state.rctEngine.value?.setDefaultAudioRouteToSpeakerphone(true); + state.rctEngine.value?.setDefaultAudioRouteToSpeakerphone(false); joinMeetingToRtc(); diff --git a/wgshare/lib/pages/metting/meeting_main_state.dart b/wgshare/lib/pages/metting/meeting_main_state.dart index fe2db6a..074ac0e 100644 --- a/wgshare/lib/pages/metting/meeting_main_state.dart +++ b/wgshare/lib/pages/metting/meeting_main_state.dart @@ -53,6 +53,8 @@ class MeetingMainState { /// 是否被允许发言 late RxBool isSpeak = false.obs; + /// 是否打开麦克风 + late RxBool isOpenMicrophone = false.obs; /// 聊天数据 late RxList meetingRoomMsgs = RxList([]); diff --git a/wgshare/lib/pages/metting/meeting_main_view.dart b/wgshare/lib/pages/metting/meeting_main_view.dart index 442129a..1be7a46 100644 --- a/wgshare/lib/pages/metting/meeting_main_view.dart +++ b/wgshare/lib/pages/metting/meeting_main_view.dart @@ -60,7 +60,7 @@ class MeetingMainPage extends StatelessWidget { SizedBox(width: 16.w), GestureDetector( child: Image.asset( - state.communicationMode.value == 1 ? 'assets/images/index_copy.png' : state.communicationMode.value == 3 ? 'assets/images/meeting_main_camera_open.png' : 'assets/images/meeting_main_audio.png', + state.communicationMode.value == 1 ? 'assets/images/meeting_main_receiver.png' : 'assets/images/meeting_main_speaker.png', width: 20.w, height: 20.h, ), @@ -118,22 +118,42 @@ class MeetingMainPage extends StatelessWidget { logic.changeMeetingInfoState(true); }, ), - GestureDetector( - child: Container( - width: 92.w, - alignment: Alignment.centerRight, - child: Image.asset( - 'assets/images/meeting_leave.png', - width: 20.w, - height: 20.h, - ), + Container( + width: 92.w, + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + /// 结束发言 + Visibility( + visible: state.isSpeak.value, + child: GestureDetector( + child: Image.asset( + 'assets/images/meeting_main_hang_up.png', + width: 22.w, + height: 22.h, + ), + onTap: () { + logic.doHttpCancelSpeak(); + }, + ), + ), + SizedBox(width: 16.w), + /// 退出会议 + GestureDetector( + child: Image.asset( + 'assets/images/meeting_leave.png', + width: 20.w, + height: 20.h, + ), + onTap: () { + Get.bottomSheet( + isScrollControlled: true, + leaveBottomSheet(context) + ); + }, + ) + ], ), - onTap: () { - Get.bottomSheet( - isScrollControlled: true, - leaveBottomSheet(context) - ); - }, ) ], ), @@ -228,16 +248,20 @@ class MeetingMainPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( - state.isSpeak.value == true ? 'assets/images/meeting_main_microphone_mute.png' : 'assets/images/meeting_main_microphone_default.png', + state.isSpeak.value == false + ? 'assets/images/meeting_main_sqfy.png' + : state.isOpenMicrophone.value == true + ? 'assets/images/meeting_main_microphone_default.png' + : 'assets/images/meeting_main_sqfy.png', width: 22.w, height: 22.h, ), SizedBox(height: 4.h), Text( - ' 静音 ', + state.isSpeak.value == false ? '申请发言' : state.isOpenMicrophone.value == true ? "手动静音" : "解除静音", style: TextStyle( fontSize: 12.sp, - color: state.isSpeak.value == true ? ColorUtil.Color_85_117_242 : ColorUtil.Color_202_202_202), + color: ColorUtil.Color_202_202_202), ) ], ), @@ -249,7 +273,11 @@ class MeetingMainPage extends StatelessWidget { context) ); }else{ - logic.doHttpCancelSpeak(); + if(state.isOpenMicrophone.value == false){ + logic.setMicrophoneOpen(true); + }else{ + logic.setMicrophoneOpen(false); + } } }, ), @@ -260,7 +288,7 @@ class MeetingMainPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Image.asset( - 'assets/images/meeting_main_camera_default.png', + 'assets/images/meeting_main_sp.png', width: 22.w, height: 22.h, ), @@ -328,28 +356,6 @@ class MeetingMainPage extends StatelessWidget { ); }, ), - - /// 更多 - /*GestureDetector( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Image.asset( - 'assets/images/meeting_main_more_default.png', - width: 22.w, - height: 22.h, - ), - SizedBox(height: 4.h), - Text( - ' 更多 ', - style: TextStyle( - fontSize: 12.sp, - color: ColorUtil.Color_202_202_202), - ) - ], - ), - onTap: () {}, - )*/ ], ), )