This commit is contained in:
fuenmao 2024-12-09 14:04:40 +08:00
parent 4a0d84ee00
commit 699a1f25ed
3 changed files with 45 additions and 16 deletions

View File

@ -95,7 +95,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
void getMeetingRoomAllUser(List<MeetingRoomUser> meetingRoomUsers) async { void getMeetingRoomAllUser(List<MeetingRoomUser> meetingRoomUsers) async {
state.users.value = meetingRoomUsers; state.users.value = meetingRoomUsers;
state.cacheUsers.value = meetingRoomUsers; state.cacheUsers.value = meetingRoomUsers;
// doHttpGetTvAnchor(); doHttpGetTvAnchor();
} }
/// ///
@ -193,6 +193,24 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
Future<void> doHttpGetTvAnchor() async { Future<void> doHttpGetTvAnchor() async {
BaseStructureResult res = await getClient().getTvAnchor(state.roomNumber.value); BaseStructureResult res = await getClient().getTvAnchor(state.roomNumber.value);
state.remoteUid.value = res.data!.toString(); state.remoteUid.value = res.data!.toString();
MeetingRoomUser? temporaryMru;
for(MeetingRoomUser mru in state.cacheUsers.value){
if(mru.uid == res.data!.toString()){
temporaryMru = mru;
}
}
var isExist = false;
for(MeetingRoomUser mru in state.videoUsers.value){
if(temporaryMru!.uid == mru.uid){
isExist = true;
}
}
if(isExist == false){
state.videoUsers.value.add(temporaryMru!);
}
if(res.data!.toString().length != 9){ if(res.data!.toString().length != 9){
if(state.remoteUid.value != UserStore.to.userInfoEntity.value!.uid) { if(state.remoteUid.value != UserStore.to.userInfoEntity.value!.uid) {
Future.delayed(const Duration(milliseconds: 1000), () { Future.delayed(const Duration(milliseconds: 1000), () {
@ -416,11 +434,17 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic); MeetingRoomUser meetingRoomUser = MeetingRoomUser.fromJson(listDynamic);
if(meetingRoomUser.enableCamera == true){ if(meetingRoomUser.enableCamera == true){
debugPrint("wgs输出===Socket-用户单独开摄像头"); debugPrint("wgs输出===Socket-用户单独开摄像头");
for(MeetingRoomUser mru in state.cacheUsers.value){
var isExist = false;
for(MeetingRoomUser mru in state.videoUsers.value){
if(mru.uid == meetingRoomUser.uid){ if(mru.uid == meetingRoomUser.uid){
mru.enableCamera = true; isExist = true;
} }
} }
if(isExist == false){
state.videoUsers.value.add(meetingRoomUser);
}
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid){ if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid){
state.isOpenCamera.value = true; state.isOpenCamera.value = true;
// //
@ -436,11 +460,13 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
} }
}else{ }else{
debugPrint("wgs输出===Socket-用户单独闭摄像头"); debugPrint("wgs输出===Socket-用户单独闭摄像头");
for(MeetingRoomUser mru in state.cacheUsers.value){
if(mru.uid == meetingRoomUser.uid){ for(var i = 0; i < state.videoUsers.value.length; i++){
mru.enableCamera = false; if(state.videoUsers.value[i].uid == meetingRoomUser.uid){
state.videoUsers.value.removeAt(i);
} }
} }
if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid){ if(meetingRoomUser.uid == UserStore.to.userInfoEntity.value!.uid){
state.isOpenCamera.value = false; state.isOpenCamera.value = false;
@ -450,6 +476,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin{
stopPreview(); stopPreview();
// //
state.floating.value?.close(); state.floating.value?.close();
state.floating.value?.hideFloating();
} }
} }
}); });

View File

@ -34,7 +34,7 @@ class MeetingMainState {
/// 012 /// 012
late RxInt pageState = 0.obs; late RxInt pageState = 0.obs;
/// pageview指示器 /// pageview指示器
late RxInt pageIndex = 0.obs; late RxInt pageIndex = 1.obs;
/// ///
late RxString roomNumber = "".obs; late RxString roomNumber = "".obs;
@ -56,6 +56,8 @@ class MeetingMainState {
/// ///
late RxList<MeetingRoomUser> cacheUsers = RxList([]); late RxList<MeetingRoomUser> cacheUsers = RxList([]);
late RxList<MeetingRoomUser> videoUsers = RxList([]);
/// ///
late RxBool isSpeak = false.obs; late RxBool isSpeak = false.obs;
/// ///

View File

@ -231,7 +231,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
preloadPagesCount: 2, preloadPagesCount: 2,
itemCount: 2, itemCount: 2,
itemBuilder: (BuildContext context, int position) => returnPage(position), itemBuilder: (BuildContext context, int position) => returnPage(position),
controller: PreloadPageController(initialPage: 0), controller: PreloadPageController(initialPage: 1),
onPageChanged: (int position) { onPageChanged: (int position) {
state.pageIndex.value = position; state.pageIndex.value = position;
if(state.isSpeak.value == true && state.isOpenCamera.value == true){ if(state.isSpeak.value == true && state.isOpenCamera.value == true){
@ -1542,11 +1542,11 @@ class MeetingMainPageState extends State<MeetingMainPage> {
crossAxisCount: 2, crossAxisCount: 2,
childAspectRatio: 0.8, childAspectRatio: 0.8,
crossAxisSpacing: 0), crossAxisSpacing: 0),
itemCount: state.cacheUsers.value.where((user) => user.enableCamera == true).toList().length, itemCount: state.videoUsers.value.length,
itemBuilder: (BuildContext ctx, index) { itemBuilder: (BuildContext ctx, index) {
return Stack( return Stack(
children: [ children: [
state.cacheUsers.value[index].uid == state.videoUsers.value[index].uid ==
UserStore.to.userInfoEntity.value!.uid UserStore.to.userInfoEntity.value!.uid
? AgoraVideoView( ? AgoraVideoView(
controller: VideoViewController( controller: VideoViewController(
@ -1559,7 +1559,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
rtcEngine: state.rctEngine.value!, rtcEngine: state.rctEngine.value!,
canvas: VideoCanvas( canvas: VideoCanvas(
uid: int.tryParse( uid: int.tryParse(
state.cacheUsers.value[index].uid), setupMode: VideoViewSetupMode.videoViewSetupAdd), state.videoUsers.value[index].uid), setupMode: VideoViewSetupMode.videoViewSetupAdd),
connection: RtcConnection( connection: RtcConnection(
channelId: state.roomNumber.value), channelId: state.roomNumber.value),
), ),
@ -1570,7 +1570,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
child: Row( child: Row(
children: [ children: [
Visibility( Visibility(
visible: state.cacheUsers.value[index].uid == UserStore.to.userInfoEntity.value!.uid, visible: state.videoUsers.value[index].uid == UserStore.to.userInfoEntity.value!.uid,
child: Image.asset( child: Image.asset(
'assets/images/meeting_main_own.png', 'assets/images/meeting_main_own.png',
width: 24.w, width: 24.w,
@ -1585,7 +1585,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(2), borderRadius: BorderRadius.circular(2),
color: ColorUtil.Color_0_0_0_96), color: ColorUtil.Color_0_0_0_96),
child: state.cacheUsers.value[index].enableMicr == true child: state.videoUsers.value[index].enableMicr == true
? Row( ? Row(
mainAxisAlignment: mainAxisAlignment:
MainAxisAlignment.center, MainAxisAlignment.center,
@ -1597,7 +1597,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
height: 20.h, height: 20.h,
child: LiquidCustomProgressIndicator( child: LiquidCustomProgressIndicator(
value: value:
state.cacheUsers.value[index] state.videoUsers.value[index]
.volume ?? .volume ??
0.0, 0.0,
valueColor: valueColor:
@ -1611,7 +1611,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
.getMicrpphonePath()), .getMicrpphonePath()),
), ),
Text( Text(
state.cacheUsers.value[index].userName, state.videoUsers.value[index].userName,
style: TextStyle( style: TextStyle(
fontSize: 12.sp, fontSize: 12.sp,
color: ColorUtil color: ColorUtil
@ -1631,7 +1631,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
height: 20.h, height: 20.h,
), ),
Text( Text(
state.cacheUsers.value[index].userName, state.videoUsers.value[index].userName,
style: TextStyle( style: TextStyle(
fontSize: 12.sp, fontSize: 12.sp,
color: ColorUtil color: ColorUtil