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

View File

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

View File

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