parent
7f53a1a855
commit
8e9e4b2812
Binary file not shown.
|
After Width: | Height: | Size: 929 B |
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 460 B |
|
|
@ -39,7 +39,10 @@ class MeetingRoomUser extends Object{
|
||||||
@JsonKey(name: 'volume')
|
@JsonKey(name: 'volume')
|
||||||
double? volume = 0.0;
|
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<String, dynamic> srcJson) => _$MeetingRoomUserFromJson(srcJson);
|
factory MeetingRoomUser.fromJson(Map<String, dynamic> srcJson) => _$MeetingRoomUserFromJson(srcJson);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -232,13 +232,30 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 共享屏幕(此版本不做)
|
if(state.remoteUid.value == UserStore.to.userInfoEntity.value!.screenShareId){
|
||||||
/*if(state.remoteUid.value == UserStore.to.userInfoEntity.value!.screenShareId){
|
|
||||||
// 如果是自己在共享
|
// 如果是自己在共享
|
||||||
}else{
|
}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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -279,8 +279,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 200.w,
|
width: 200.w,
|
||||||
height: 40.h,
|
height: 40.h,
|
||||||
margin:
|
margin: const EdgeInsets.only(
|
||||||
const EdgeInsets.only(left: 20, bottom: 40),
|
left: 20, bottom: 40),
|
||||||
padding: const EdgeInsets.only(left: 20),
|
padding: const EdgeInsets.only(left: 20),
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: const BorderRadius.only(
|
borderRadius: const BorderRadius.only(
|
||||||
|
|
@ -293,7 +293,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
color: ColorUtil.Color_99_111_158),
|
color: ColorUtil.Color_99_111_158),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment:
|
||||||
|
CrossAxisAlignment.center,
|
||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Image.asset(
|
Image.asset(
|
||||||
|
|
@ -315,26 +316,28 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
Get.bottomSheet(
|
Get.bottomSheet(
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
chatBottomSheet(context));
|
chatBottomSheet(context));
|
||||||
Future.delayed(const Duration(milliseconds: 100),
|
Future.delayed(
|
||||||
() {
|
const Duration(milliseconds: 100), () {
|
||||||
state.chatController.jumpTo(state
|
state.chatController.jumpTo(state
|
||||||
.chatController.position.maxScrollExtent);
|
.chatController
|
||||||
});
|
.position
|
||||||
|
.maxScrollExtent);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|
||||||
Visibility(
|
Visibility(
|
||||||
visible: state.isSpeak.value,
|
visible: state.isSpeak.value,
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
child: Container(
|
child: Container(
|
||||||
width: 82.w,
|
width: 82.w,
|
||||||
height: 40.h,
|
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,
|
alignment: Alignment.center,
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(Radius.circular(99)),
|
borderRadius: BorderRadius.all(
|
||||||
color: ColorUtil.Color_255_69_69
|
Radius.circular(99)),
|
||||||
),
|
color: ColorUtil.Color_255_69_69),
|
||||||
child: Text(
|
child: Text(
|
||||||
'结束发言',
|
'结束发言',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|
@ -417,7 +420,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
if (state.isSpeak.value == false) {
|
if (state.isSpeak.value == false) {
|
||||||
Get.bottomSheet(
|
Get.bottomSheet(
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
applySpeakPermissionBottomSheet(context,1));
|
applySpeakPermissionBottomSheet(
|
||||||
|
context, 1));
|
||||||
} else {
|
} else {
|
||||||
if (state.isOpenMicrophone.value == false) {
|
if (state.isOpenMicrophone.value == false) {
|
||||||
logic.doHttpSetMicr(true);
|
logic.doHttpSetMicr(true);
|
||||||
|
|
@ -446,7 +450,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
Text(
|
Text(
|
||||||
/*state.isSpeak.value == false
|
/*state.isSpeak.value == false
|
||||||
? '申请发言'
|
? '申请发言'
|
||||||
: */state.isOpenCamera.value == true
|
: */
|
||||||
|
state.isOpenCamera.value == true
|
||||||
? "关闭视频"
|
? "关闭视频"
|
||||||
: "开启视频",
|
: "开启视频",
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
|
@ -459,7 +464,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
if (state.isSpeak.value == false) {
|
if (state.isSpeak.value == false) {
|
||||||
Get.bottomSheet(
|
Get.bottomSheet(
|
||||||
isScrollControlled: true,
|
isScrollControlled: true,
|
||||||
applySpeakPermissionBottomSheet(context,2));
|
applySpeakPermissionBottomSheet(
|
||||||
|
context, 2));
|
||||||
} else {
|
} else {
|
||||||
if (state.isOpenCamera.value == true) {
|
if (state.isOpenCamera.value == true) {
|
||||||
logic.doHttpSetCamer(false);
|
logic.doHttpSetCamer(false);
|
||||||
|
|
@ -763,14 +769,13 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
child: Container(
|
child: Container(
|
||||||
color: ColorUtil.Color_57_57_57_08,
|
color: ColorUtil.Color_57_57_57_08,
|
||||||
),
|
),
|
||||||
onTap: (){
|
onTap: () {
|
||||||
logic.changeMeetingInfoState(false);
|
logic.changeMeetingInfoState(false);
|
||||||
},
|
},
|
||||||
)
|
))
|
||||||
)
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -784,13 +789,13 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Expanded(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
child: Container(
|
child: Container(
|
||||||
color: ColorUtil.Color_57_57_57_08,
|
color: ColorUtil.Color_57_57_57_08,
|
||||||
),
|
),
|
||||||
onTap: (){
|
onTap: () {
|
||||||
logic.changeMeetingAudioState(false);
|
logic.changeMeetingAudioState(false);
|
||||||
},
|
},
|
||||||
)),
|
)),
|
||||||
Container(
|
Container(
|
||||||
color: ColorUtil.Color_57_57_57_08,
|
color: ColorUtil.Color_57_57_57_08,
|
||||||
child: Container(
|
child: Container(
|
||||||
|
|
@ -809,13 +814,13 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
child:Container(
|
child: Container(
|
||||||
color: ColorUtil.Color_57_57_57_08,
|
color: ColorUtil.Color_57_57_57_08,
|
||||||
),
|
),
|
||||||
onTap: (){
|
onTap: () {
|
||||||
logic.changeMeetingAudioState(false);
|
logic.changeMeetingAudioState(false);
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
@ -874,7 +879,8 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 申请发言权限底部弹窗
|
/// 申请发言权限底部弹窗
|
||||||
Widget applySpeakPermissionBottomSheet(BuildContext context, int defaulOpenState) {
|
Widget applySpeakPermissionBottomSheet(
|
||||||
|
BuildContext context, int defaulOpenState) {
|
||||||
return Container(
|
return Container(
|
||||||
height: 240.h,
|
height: 240.h,
|
||||||
color: ColorUtil.Color_7_9_11,
|
color: ColorUtil.Color_7_9_11,
|
||||||
|
|
@ -1070,13 +1076,15 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
Container(
|
Container(
|
||||||
margin:
|
margin:
|
||||||
const EdgeInsets.only(top: 18, left: 16, right: 16, bottom: 16),
|
const EdgeInsets.only(top: 18, left: 16, right: 16, bottom: 16),
|
||||||
child: Text(
|
child: GetBuilder<MeetingMainLogic>(builder: (controll) {
|
||||||
'会议中(${state.users.value.length})',
|
return Text(
|
||||||
style: TextStyle(
|
'会议中(${state.users.value.length})',
|
||||||
fontSize: 14.sp,
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.w500,
|
fontSize: 14.sp,
|
||||||
color: ColorUtil.Color_85_117_242),
|
fontWeight: FontWeight.w500,
|
||||||
),
|
color: ColorUtil.Color_85_117_242),
|
||||||
|
);
|
||||||
|
}),
|
||||||
),
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: ScrollConfiguration(
|
child: ScrollConfiguration(
|
||||||
|
|
@ -1175,7 +1183,10 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
children: [
|
children: [
|
||||||
Container(
|
Container(
|
||||||
child: Image.asset(
|
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,
|
width: 17.w,
|
||||||
height: 17.h,
|
height: 17.h,
|
||||||
),
|
),
|
||||||
|
|
@ -1517,7 +1528,9 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
canvas: VideoCanvas(
|
canvas: VideoCanvas(
|
||||||
uid: int.tryParse(state.remoteUid.value),
|
uid: int.tryParse(state.remoteUid.value),
|
||||||
setupMode: VideoViewSetupMode.videoViewSetupAdd,
|
setupMode: VideoViewSetupMode.videoViewSetupAdd,
|
||||||
renderMode: state.remoteUid.value.length == 9 ? RenderModeType.renderModeFit : RenderModeType.renderModeHidden),
|
renderMode: state.remoteUid.value.length == 9
|
||||||
|
? RenderModeType.renderModeFit
|
||||||
|
: RenderModeType.renderModeHidden),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: Container(
|
: Container(
|
||||||
|
|
@ -1677,11 +1690,14 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
shapePath:
|
shapePath:
|
||||||
ViewSvgPath.getMicrpphonePath()),
|
ViewSvgPath.getMicrpphonePath()),
|
||||||
),
|
),
|
||||||
Text(
|
SizedBox(
|
||||||
state.cacheUsers.value[index].userName,
|
width: 70,
|
||||||
style: TextStyle(
|
child: Text(
|
||||||
fontSize: 12.sp,
|
state.cacheUsers.value[index].userName,
|
||||||
color: ColorUtil.Color_255_255_255),
|
style: TextStyle(
|
||||||
|
fontSize: 12.sp,
|
||||||
|
color: ColorUtil.Color_255_255_255),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
@ -1694,11 +1710,14 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
width: 20.w,
|
width: 20.w,
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
),
|
),
|
||||||
Text(
|
SizedBox(
|
||||||
state.cacheUsers.value[index].userName,
|
width: 70,
|
||||||
style: TextStyle(
|
child: Text(
|
||||||
fontSize: 12.sp,
|
state.cacheUsers.value[index].userName,
|
||||||
color: ColorUtil.Color_255_255_255),
|
style: TextStyle(
|
||||||
|
fontSize: 12.sp,
|
||||||
|
color: ColorUtil.Color_255_255_255),
|
||||||
|
)
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -72,11 +72,16 @@ class MeetingMainVoiceComponent extends StatelessWidget {
|
||||||
shapePath: ViewSvgPath.getMicrpphonePath()
|
shapePath: ViewSvgPath.getMicrpphonePath()
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Text(
|
SizedBox(
|
||||||
users[index].userName,
|
width: 70,
|
||||||
style: TextStyle(
|
child: Text(
|
||||||
fontSize: 12.sp,
|
users[index].userName,
|
||||||
color: ColorUtil.Color_255_255_255),
|
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,
|
width: 20.w,
|
||||||
height: 20.h,
|
height: 20.h,
|
||||||
),
|
),
|
||||||
Text(
|
SizedBox(
|
||||||
users[index].userName,
|
width: 70,
|
||||||
style: TextStyle(
|
child: Text(
|
||||||
fontSize: 12.sp,
|
users[index].userName,
|
||||||
color: ColorUtil.Color_255_255_255),
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
fontSize: 12.sp,
|
||||||
|
color: ColorUtil.Color_255_255_255),
|
||||||
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue