视频OK
This commit is contained in:
parent
4a0d84ee00
commit
699a1f25ed
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ class MeetingMainState {
|
||||||
/// 当前页面状态,0:语音,1:视频,2,共享
|
/// 当前页面状态,0:语音,1:视频,2,共享
|
||||||
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;
|
||||||
/// 是否打开麦克风
|
/// 是否打开麦克风
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue