1.7下午
This commit is contained in:
parent
976b76adae
commit
44180f9924
|
|
@ -5,7 +5,7 @@ class RequestConfig {
|
||||||
// static const _devBaseUrl = "https://zyapitest.23544.com:16440"; // 开发
|
// static const _devBaseUrl = "https://zyapitest.23544.com:16440"; // 开发
|
||||||
static const _devBaseUrl = "http://192.168.2.9:5192"; // 开发
|
static const _devBaseUrl = "http://192.168.2.9:5192"; // 开发
|
||||||
// static const _proBaseUrl = "http://192.168.2.119:1091"; // 生产
|
// static const _proBaseUrl = "http://192.168.2.119:1091"; // 生产
|
||||||
static const _proBaseUrl = "https://zyapi.23544.com/ipadapi"; // 生产
|
static const _proBaseUrl = "http://192.168.2.9:5192"; // 生产
|
||||||
static const imgUrl = 'https://dpc-job-oss.23544.com/';
|
static const imgUrl = 'https://dpc-job-oss.23544.com/';
|
||||||
|
|
||||||
static RequestConfig? _instance;
|
static RequestConfig? _instance;
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,8 @@ import 'package:dio/dio.dart';
|
||||||
import 'package:wgshare/common/api/retrofit_client.dart';
|
import 'package:wgshare/common/api/retrofit_client.dart';
|
||||||
import 'package:wgshare/common/config/request_config.dart';
|
import 'package:wgshare/common/config/request_config.dart';
|
||||||
import 'package:wgshare/common/store/user_store.dart';
|
import 'package:wgshare/common/store/user_store.dart';
|
||||||
|
import 'package:wgshare/utils/anti_shake_throttling.dart';
|
||||||
|
import 'package:wgshare/utils/routeUtil.dart';
|
||||||
import 'package:wgshare/utils/storage.dart';
|
import 'package:wgshare/utils/storage.dart';
|
||||||
import 'package:wgshare/utils/toast_utils.dart';
|
import 'package:wgshare/utils/toast_utils.dart';
|
||||||
import 'package:wgshare/routes/app_routes.dart';
|
import 'package:wgshare/routes/app_routes.dart';
|
||||||
|
|
@ -111,9 +113,9 @@ class ResponseHandle extends Interceptor {
|
||||||
((data['code'] != null && (data['code'] == 401 || data['code'] == '401')) ||
|
((data['code'] != null && (data['code'] == 401 || data['code'] == '401')) ||
|
||||||
(data['Code'] != null && (data['Code'] == 401 || data['Code'] == '401')));
|
(data['Code'] != null && (data['Code'] == 401 || data['Code'] == '401')));
|
||||||
|
|
||||||
if (statusCode == 401 || flag) {
|
if ((statusCode == 401 || flag) && RouteUtil.getRoute() != Routes.loginPage) {
|
||||||
Future.delayed(const Duration(seconds: 2), () {
|
easyThrottle("toLogin",(){
|
||||||
StorageService.to.erase();
|
UserStore.to.erase();
|
||||||
getx.Get.offAllNamed(Routes.loginPage);
|
getx.Get.offAllNamed(Routes.loginPage);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
@ -163,12 +165,12 @@ class TheError extends Interceptor {
|
||||||
switch (statusCode) {
|
switch (statusCode) {
|
||||||
case 401:
|
case 401:
|
||||||
message = '用户登录失效,请重新登录';
|
message = '用户登录失效,请重新登录';
|
||||||
|
if(RouteUtil.getRoute() != Routes.loginPage){
|
||||||
Future.delayed(const Duration(seconds: 2), () {
|
easyThrottle("toLogin",(){
|
||||||
// UserStore.to.erase();
|
UserStore.to.erase();
|
||||||
StorageService.to.erase();
|
|
||||||
getx.Get.offAllNamed(Routes.loginPage);
|
getx.Get.offAllNamed(Routes.loginPage);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 404:
|
case 404:
|
||||||
message = '无效地址';
|
message = '无效地址';
|
||||||
|
|
|
||||||
|
|
@ -134,6 +134,7 @@ class HomeLogic extends GetxController with RequestToolMixin {
|
||||||
leftBtnStr: '拒绝',
|
leftBtnStr: '拒绝',
|
||||||
rightBtnStr: '同意',
|
rightBtnStr: '同意',
|
||||||
leftBtnCallback: () {
|
leftBtnCallback: () {
|
||||||
|
Get.back();
|
||||||
Get.toNamed(Routes.meetingMainPage,
|
Get.toNamed(Routes.meetingMainPage,
|
||||||
arguments: {
|
arguments: {
|
||||||
"roomNumber": state.meetingRooms.value[index].roomNum
|
"roomNumber": state.meetingRooms.value[index].roomNum
|
||||||
|
|
@ -142,6 +143,7 @@ class HomeLogic extends GetxController with RequestToolMixin {
|
||||||
rightBtnCallback: () {
|
rightBtnCallback: () {
|
||||||
PermissionService.requestPermissions().then((value) {
|
PermissionService.requestPermissions().then((value) {
|
||||||
if (value == true) {
|
if (value == true) {
|
||||||
|
Get.back();
|
||||||
Get.toNamed(Routes.meetingMainPage,
|
Get.toNamed(Routes.meetingMainPage,
|
||||||
arguments: {
|
arguments: {
|
||||||
"roomNumber": state.meetingRooms.value[index].roomNum
|
"roomNumber": state.meetingRooms.value[index].roomNum
|
||||||
|
|
|
||||||
|
|
@ -20,22 +20,22 @@ import '../../view/upgrade/loadJson/load_network_json.dart';
|
||||||
import 'login_state.dart';
|
import 'login_state.dart';
|
||||||
|
|
||||||
class LoginLogic extends GetxController with RequestToolMixin {
|
class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
final LoginState state = LoginState();
|
late LoginState state;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
print("初始化登录init................");
|
||||||
|
state = LoginState();
|
||||||
HideCheckVersion hideCheckVersion = HideCheckVersion();
|
HideCheckVersion hideCheckVersion = HideCheckVersion();
|
||||||
hideCheckVersion.doHttpHideCheckVersion();
|
hideCheckVersion.doHttpHideCheckVersion();
|
||||||
|
super.onInit();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onClose() {
|
void onClose() {
|
||||||
|
print("销毁onClose................");
|
||||||
|
|
||||||
super.onClose();
|
super.onClose();
|
||||||
state.passwordController.dispose();
|
|
||||||
state.userNameController.dispose();
|
|
||||||
state.meetingCodeController.dispose();
|
|
||||||
state.nickNameCodeController.dispose();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 改变页面状态
|
/// 改变页面状态
|
||||||
|
|
@ -50,24 +50,24 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
|
|
||||||
/// 登录
|
/// 登录
|
||||||
Future<void> doHttpLogin() async {
|
Future<void> doHttpLogin() async {
|
||||||
if(state.userNameController.text.isEmpty){
|
if(state.userNameController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入账号");
|
ToastUtils.showError("请输入账号");
|
||||||
}else if(state.passwordController.text.isEmpty){
|
}else if(state.passwordController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入密码");
|
ToastUtils.showError("请输入密码");
|
||||||
}else if(state.checkAgreementBool.value != true){
|
}else if(state.checkAgreementBool.value != true){
|
||||||
ToastUtils.showError("请阅读并勾选相关协议");
|
ToastUtils.showError("请阅读并勾选相关协议");
|
||||||
}else{
|
}else{
|
||||||
BaseStructureResult<UserInfoEntity> res = await getClient().login(state.userNameController.text, md5.convert(utf8.encode(state.passwordController.text)).toString());
|
BaseStructureResult<UserInfoEntity> res = await getClient().login(state.userNameController!.text, md5.convert(utf8.encode(state.passwordController!.text)).toString());
|
||||||
if (null != res.data) {
|
if (null != res.data) {
|
||||||
UserStore.to.setToken(res.data!.token);
|
UserStore.to.setToken(res.data!.token);
|
||||||
UserStore.to.setRefreshToken(res.data!.refreshToken);
|
UserStore.to.setRefreshToken(res.data!.refreshToken);
|
||||||
UserStore.to.setUserDetailInfo(res.data!);
|
UserStore.to.setUserDetailInfo(res.data!);
|
||||||
UserStore.to.setLoginType(AppConfig.NORMAL_LOGIN);
|
UserStore.to.setLoginType(AppConfig.NORMAL_LOGIN);
|
||||||
Get.offAllNamed(Routes.startPage);
|
Get.offAllNamed(Routes.startPage);
|
||||||
state.userNameController.text = "";
|
state.userNameController!.text = "";
|
||||||
state.passwordController.text = "";
|
state.passwordController!.text = "";
|
||||||
state.meetingCodeController.text = "";
|
state.meetingCodeController!.text = "";
|
||||||
state.nickNameCodeController.text = "";
|
state.nickNameCodeController!.text = "";
|
||||||
state.checkAgreementBool.value = false;
|
state.checkAgreementBool.value = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -75,26 +75,26 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
|
|
||||||
/// 直接进入会议(匿名登录)
|
/// 直接进入会议(匿名登录)
|
||||||
Future<void> doHttpAnonymousLogin() async {
|
Future<void> doHttpAnonymousLogin() async {
|
||||||
if(state.meetingCodeController.text.isEmpty){
|
if(state.meetingCodeController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入会议号");
|
ToastUtils.showError("请输入会议号");
|
||||||
}else if(state.meetingCodeController.text.length != 8){
|
}else if(state.meetingCodeController!.text.length != 8){
|
||||||
ToastUtils.showError("请输入正确的会议号");
|
ToastUtils.showError("请输入正确的会议号");
|
||||||
}else if(state.nickNameCodeController.text.isEmpty){
|
}else if(state.nickNameCodeController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入昵称");
|
ToastUtils.showError("请输入昵称");
|
||||||
}else if(state.checkAgreementBool != true){
|
}else if(state.checkAgreementBool != true){
|
||||||
ToastUtils.showError("请阅读并勾选相关协议");
|
ToastUtils.showError("请阅读并勾选相关协议");
|
||||||
}else{
|
}else{
|
||||||
BaseStructureResult<UserInfoEntity> res = await getClient().anonLogin(await DeviceInfo.getDeviceId(),state.nickNameCodeController.text, state.meetingCodeController.text);
|
BaseStructureResult<UserInfoEntity> res = await getClient().anonLogin(await DeviceInfo.getDeviceId(),state.nickNameCodeController!.text, state.meetingCodeController!.text);
|
||||||
if (null != res.data) {
|
if (null != res.data) {
|
||||||
UserStore.to.setToken(res.data!.token);
|
UserStore.to.setToken(res.data!.token);
|
||||||
UserStore.to.setRefreshToken(res.data!.refreshToken);
|
UserStore.to.setRefreshToken(res.data!.refreshToken);
|
||||||
UserStore.to.setUserDetailInfo(res.data!);
|
UserStore.to.setUserDetailInfo(res.data!);
|
||||||
UserStore.to.setLoginType(AppConfig.ANONYMOUS_LOGIN);
|
UserStore.to.setLoginType(AppConfig.ANONYMOUS_LOGIN);
|
||||||
Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingCodeController.text});
|
Get.toNamed(Routes.meetingMainPage, arguments: {"roomNumber": state.meetingCodeController!.text});
|
||||||
state.userNameController.text = "";
|
state.userNameController!.text = "";
|
||||||
state.passwordController.text = "";
|
state.passwordController!.text = "";
|
||||||
state.meetingCodeController.text = "";
|
state.meetingCodeController!.text = "";
|
||||||
state.nickNameCodeController.text = "";
|
state.nickNameCodeController!.text = "";
|
||||||
state.checkAgreementBool.value = false;
|
state.checkAgreementBool.value = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -102,16 +102,16 @@ class LoginLogic extends GetxController with RequestToolMixin {
|
||||||
|
|
||||||
/// 检验房间
|
/// 检验房间
|
||||||
Future<void> doHttpCheckMeetingRoom() async {
|
Future<void> doHttpCheckMeetingRoom() async {
|
||||||
if(state.meetingCodeController.text.isEmpty){
|
if(state.meetingCodeController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入会议号");
|
ToastUtils.showError("请输入会议号");
|
||||||
}else if(state.meetingCodeController.text.length != 8){
|
}else if(state.meetingCodeController!.text.length != 8){
|
||||||
ToastUtils.showError("请输入正确的会议号");
|
ToastUtils.showError("请输入正确的会议号");
|
||||||
}else if(state.nickNameCodeController.text.isEmpty){
|
}else if(state.nickNameCodeController!.text.isEmpty){
|
||||||
ToastUtils.showError("请输入昵称");
|
ToastUtils.showError("请输入昵称");
|
||||||
}else if(state.checkAgreementBool != true){
|
}else if(state.checkAgreementBool != true){
|
||||||
ToastUtils.showError("请阅读并勾选相关协议");
|
ToastUtils.showError("请阅读并勾选相关协议");
|
||||||
}else{
|
}else{
|
||||||
BaseStructureResult<bool> res = await getClient().checkout(state.meetingCodeController.text);
|
BaseStructureResult<bool> res = await getClient().checkout(state.meetingCodeController!.text);
|
||||||
if (null != res.data) {
|
if (null != res.data) {
|
||||||
if(res.data == true){
|
if(res.data == true){
|
||||||
doHttpAnonymousLogin();
|
doHttpAnonymousLogin();
|
||||||
|
|
|
||||||
|
|
@ -3,12 +3,14 @@ import 'package:get/get.dart';
|
||||||
|
|
||||||
class LoginState {
|
class LoginState {
|
||||||
|
|
||||||
LoginState() {}
|
TextEditingController? userNameController;
|
||||||
|
TextEditingController? passwordController;
|
||||||
|
TextEditingController? meetingCodeController;
|
||||||
|
TextEditingController? nickNameCodeController;
|
||||||
|
LoginState() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
late TextEditingController userNameController = TextEditingController();
|
|
||||||
late TextEditingController passwordController = TextEditingController();
|
|
||||||
late TextEditingController meetingCodeController = TextEditingController();
|
|
||||||
late TextEditingController nickNameCodeController = TextEditingController();
|
|
||||||
|
|
||||||
/// 页面状态,0:账号,1:会议号
|
/// 页面状态,0:账号,1:会议号
|
||||||
late RxInt pageState = 0.obs;
|
late RxInt pageState = 0.obs;
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,10 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
Utils.hideKeyboard();
|
Utils.hideKeyboard();
|
||||||
|
state.userNameController = TextEditingController();
|
||||||
|
state.passwordController = TextEditingController();
|
||||||
|
state.meetingCodeController = TextEditingController();
|
||||||
|
state.nickNameCodeController = TextEditingController();
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -394,4 +398,13 @@ class _LoginPageState extends State<LoginPage> {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
state.passwordController?.dispose();
|
||||||
|
state.userNameController?.dispose();
|
||||||
|
state.meetingCodeController?.dispose();
|
||||||
|
state.nickNameCodeController?.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
await getClient().getMeetingToken(state.roomNumber.value);
|
await getClient().getMeetingToken(state.roomNumber.value);
|
||||||
state.meetingToken.value = res.data!;
|
state.meetingToken.value = res.data!;
|
||||||
|
|
||||||
if (isInit == true) {
|
if (isInit) {
|
||||||
signalRSocket();
|
signalRSocket();
|
||||||
} else {
|
} else {
|
||||||
initRtc();
|
initRtc();
|
||||||
|
|
@ -89,6 +89,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
getMeetingRoomAllUser(results[1].data as List<MeetingRoomUser>);
|
getMeetingRoomAllUser(results[1].data as List<MeetingRoomUser>);
|
||||||
} finally {
|
} finally {
|
||||||
ToastUtils.dismiss();
|
ToastUtils.dismiss();
|
||||||
|
ToastUtils.showSuccess("${state.isJoinSuccess}--${state.rctEngine.value}--${state.users.isNotEmpty}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -166,11 +167,13 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
ToastUtils.showSuccess("切换用户成功");
|
ToastUtils.showSuccess("切换用户成功");
|
||||||
if (uid == UserStore.to.userInfoEntity.value!.uid) {
|
if (uid == UserStore.to.userInfoEntity.value!.uid) {
|
||||||
state.remoteUid.value = "0";
|
state.remoteUid.value = "0";
|
||||||
|
state.remoteAssistantUid.value = "0";
|
||||||
} else {
|
} else {
|
||||||
if (state.isSpeak.value == true && state.isOpenCamera.value == true) {
|
if (state.isSpeak.value == true && state.isOpenCamera.value == true) {
|
||||||
state.floating.value?.open(Get.context!);
|
state.floating.value?.open(Get.context!);
|
||||||
}
|
}
|
||||||
state.remoteUid.value = uid;
|
state.remoteUid.value = uid;
|
||||||
|
state.remoteAssistantUid.value = uid;
|
||||||
}
|
}
|
||||||
changePageState(0);
|
changePageState(0);
|
||||||
Future.delayed(const Duration(milliseconds: 200), () {
|
Future.delayed(const Duration(milliseconds: 200), () {
|
||||||
|
|
@ -270,7 +273,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
// 判断当前会议室是否存在全员观看主播
|
// 判断当前会议室是否存在全员观看主播
|
||||||
var isCurrentUserIsCamera = false;
|
var isCurrentUserIsCamera = false;
|
||||||
for (var i = 0; i < state.cacheUsers.value.length; i++) {
|
for (var i = 0; i < state.cacheUsers.value.length; i++) {
|
||||||
if (state.remoteUid.value == state.cacheUsers.value[i].uid && state.cacheUsers.value[i].enableCamera == true) {
|
if (state.remoteUid.value == state.cacheUsers.value[i].uid &&
|
||||||
|
state.cacheUsers.value[i].enableCamera == true) {
|
||||||
isCurrentUserIsCamera = true;
|
isCurrentUserIsCamera = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -398,11 +402,21 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
debugPrint("wgs输出===:SignalR Socket-重连失败$error");
|
debugPrint("wgs输出===:SignalR Socket-重连失败$error");
|
||||||
ToastUtils.dismiss();
|
ToastUtils.dismiss();
|
||||||
|
|
||||||
if ((state.isNormaExit.value == false && state.isShowOkAlertDialog.value == false) || null == UserStore.to.userInfoEntity.value) {
|
debugPrint(
|
||||||
|
"wgs输出===:SignalR Socket-重连打印1${state.isNormaExit.value == false && state.isShowOkAlertDialog.value == false}");
|
||||||
|
debugPrint("wgs输出===:SignalR Socket-重连打印2${null != UserStore.to.token}");
|
||||||
|
debugPrint(
|
||||||
|
"wgs输出===:SignalR Socket-重连打印3${UserStore.to.token!.isNotEmpty}");
|
||||||
|
debugPrint(
|
||||||
|
"wgs输出===:SignalR Socket-重连打印4${(state.isNormaExit.value == false && state.isShowOkAlertDialog.value == false) || null != UserStore.to.token || UserStore.to.token!.isNotEmpty}");
|
||||||
|
|
||||||
|
if ((state.isNormaExit.value == false &&
|
||||||
|
state.isShowOkAlertDialog.value == false) ||
|
||||||
|
(state.isNormaExit.value == false && null != UserStore.to.token)) {
|
||||||
showOkAlertDialog(
|
showOkAlertDialog(
|
||||||
context: Get.context!,
|
context: Get.context!,
|
||||||
title: "提示",
|
title: "提示",
|
||||||
message: "网络错误,请重新加入会议室",
|
message: "网络错误,请重新加入会议室1",
|
||||||
okLabel: "确定",
|
okLabel: "确定",
|
||||||
barrierDismissible: false,
|
barrierDismissible: false,
|
||||||
).then((OkCancelResult value) {
|
).then((OkCancelResult value) {
|
||||||
|
|
@ -648,7 +662,8 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
if (mru.uid == meetingRoomUser.uid) {
|
if (mru.uid == meetingRoomUser.uid) {
|
||||||
mru.enableCamera = true;
|
mru.enableCamera = true;
|
||||||
}
|
}
|
||||||
debugPrint("wgs输出===:Socket-用户单独开摄像头---${state.remoteUid.value}--${meetingRoomUser.uid}");
|
debugPrint(
|
||||||
|
"wgs输出===:Socket-用户单独开摄像头---${state.remoteUid.value}--${meetingRoomUser.uid}");
|
||||||
if (state.remoteUid.value == meetingRoomUser.uid) {
|
if (state.remoteUid.value == meetingRoomUser.uid) {
|
||||||
doHttpGetTvAnchor();
|
doHttpGetTvAnchor();
|
||||||
}
|
}
|
||||||
|
|
@ -687,14 +702,15 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
muteLocalVideoStream(true);
|
muteLocalVideoStream(true);
|
||||||
// 停止本地预览
|
// 停止本地预览
|
||||||
stopPreview();
|
stopPreview();
|
||||||
// 当前全员观看主播是自己时
|
|
||||||
if (state.remoteUid.value == "0") {
|
|
||||||
state.remoteUid.value = "";
|
|
||||||
}
|
|
||||||
// 关闭本地预览悬浮窗
|
// 关闭本地预览悬浮窗
|
||||||
if (state.floating.value?.isShowing == true) {
|
if (state.floating.value?.isShowing == true) {
|
||||||
state.floating.value?.close();
|
state.floating.value?.close();
|
||||||
}
|
}
|
||||||
|
// 当前全员观看主播是自己时
|
||||||
|
if (state.remoteUid.value == "0") {
|
||||||
|
state.remoteUid.value = "";
|
||||||
|
doHttpGetTvAnchor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
update();
|
update();
|
||||||
|
|
@ -713,8 +729,12 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
/// 加入会议室
|
/// 加入会议室
|
||||||
/// isAgain:是否重新加入
|
/// isAgain:是否重新加入
|
||||||
Future<void> joinMeetingToSocket(bool isAgain) async {
|
Future<void> joinMeetingToSocket(bool isAgain) async {
|
||||||
await state.hubConnection.value?.invoke("joinChannel",
|
await state.hubConnection.value?.invoke("joinChannel", args: [
|
||||||
args: [state.roomNumber.value, state.isOpenMicrophone.value, state.isOpenCamera.value, state.isSpeak.value]);
|
state.roomNumber.value,
|
||||||
|
state.isOpenMicrophone.value,
|
||||||
|
state.isOpenCamera.value,
|
||||||
|
state.isSpeak.value
|
||||||
|
]);
|
||||||
mergeFetch(isAgain);
|
mergeFetch(isAgain);
|
||||||
/*if(isAgain == false){
|
/*if(isAgain == false){
|
||||||
mergeFetch(isAgain);
|
mergeFetch(isAgain);
|
||||||
|
|
@ -765,7 +785,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
|
|
||||||
// 音频模块默认启动,所以这里不再调用启动方法
|
// 音频模块默认启动,所以这里不再调用启动方法
|
||||||
// 启用视频模块
|
// 启用视频模块
|
||||||
enableVideo();
|
await enableVideo();
|
||||||
// 设置默认音频路由为听筒
|
// 设置默认音频路由为听筒
|
||||||
await state.rctEngine.value?.setDefaultAudioRouteToSpeakerphone(false);
|
await state.rctEngine.value?.setDefaultAudioRouteToSpeakerphone(false);
|
||||||
// 打开用户音量回调
|
// 打开用户音量回调
|
||||||
|
|
@ -775,8 +795,6 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
await state.rctEngine.value
|
await state.rctEngine.value
|
||||||
?.setDualStreamMode(mode: SimulcastStreamMode.enableSimulcastStream);
|
?.setDualStreamMode(mode: SimulcastStreamMode.enableSimulcastStream);
|
||||||
|
|
||||||
joinMeetingToRtc();
|
|
||||||
|
|
||||||
// 回调
|
// 回调
|
||||||
state.rctEngine.value?.registerEventHandler(
|
state.rctEngine.value?.registerEventHandler(
|
||||||
RtcEngineEventHandler(
|
RtcEngineEventHandler(
|
||||||
|
|
@ -860,10 +878,9 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
int speakerNumber,
|
int speakerNumber,
|
||||||
int totalVolume) {
|
int totalVolume) {
|
||||||
if (speakers.isNotEmpty) {
|
if (speakers.isNotEmpty) {
|
||||||
|
|
||||||
for (AudioVolumeInfo avi in speakers) {
|
for (AudioVolumeInfo avi in speakers) {
|
||||||
if (avi.uid == 0) {
|
if (avi.uid == 0) {
|
||||||
debugPrint("wgs输出===:RTC-本地用户音量提示:${avi.uid}--${avi.volume}");
|
// debugPrint("wgs输出===:RTC-本地用户音量提示:${avi.uid}--${avi.volume}");
|
||||||
for (MeetingRoomUser mru in state.cacheUsers.value) {
|
for (MeetingRoomUser mru in state.cacheUsers.value) {
|
||||||
if (UserStore.to.userInfoEntity.value!.uid == mru.uid) {
|
if (UserStore.to.userInfoEntity.value!.uid == mru.uid) {
|
||||||
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
||||||
|
|
@ -872,7 +889,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
debugPrint("wgs输出===:RTC-远端用户音量提示:${avi.uid}--${avi.volume}");
|
// debugPrint("wgs输出===:RTC-远端用户音量提示:${avi.uid}--${avi.volume}");
|
||||||
for (MeetingRoomUser mru in state.cacheUsers.value) {
|
for (MeetingRoomUser mru in state.cacheUsers.value) {
|
||||||
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
mru.volume = CountMicrophoneVolume.getVolume(avi.volume!);
|
||||||
|
|
||||||
|
|
@ -947,12 +964,15 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
ToastUtils.showLoadingToMask(
|
ToastUtils.showLoadingToMask(
|
||||||
"网络故障,正在重连...", EasyLoadingMaskType.black);
|
"网络故障,正在重连...", EasyLoadingMaskType.black);
|
||||||
}
|
}
|
||||||
} else if (stateType == ConnectionStateType.connectionStateConnected &&
|
} else if (stateType ==
|
||||||
|
ConnectionStateType.connectionStateConnected &&
|
||||||
reason ==
|
reason ==
|
||||||
ConnectionChangedReasonType.connectionChangedRejoinSuccess) {
|
ConnectionChangedReasonType
|
||||||
|
.connectionChangedRejoinSuccess) {
|
||||||
ToastUtils.dismiss();
|
ToastUtils.dismiss();
|
||||||
if (EasyLoading.isShow == false) {
|
if (EasyLoading.isShow == false) {
|
||||||
ToastUtils.showSuccessToMask("重连成功!", EasyLoadingMaskType.black);
|
ToastUtils.showSuccessToMask(
|
||||||
|
"重连成功!", EasyLoadingMaskType.black);
|
||||||
}
|
}
|
||||||
} else if (reason ==
|
} else if (reason ==
|
||||||
ConnectionChangedReasonType.connectionChangedLost) {
|
ConnectionChangedReasonType.connectionChangedLost) {
|
||||||
|
|
@ -973,6 +993,20 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 渲染器已接收首帧远端视频回调
|
||||||
|
onFirstRemoteVideoFrame: (RtcConnection connection, int remoteUid,
|
||||||
|
int width, int height, int elapsed) async {
|
||||||
|
debugPrint("wgs输出===:RTC-渲染器已接收首帧远端视频回调:${remoteUid}--${width}--${height}--${elapsed}");
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
// 已接收到远端视频并完成解码回调
|
||||||
|
onFirstRemoteVideoDecoded: (RtcConnection connection, int remoteUid,
|
||||||
|
int width, int height, int elapsed) {
|
||||||
|
debugPrint("wgs输出===:RTC-已接收到远端视频并完成解码回调:${remoteUid}--${width}--${height}--${elapsed}");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取设备权限出错回调
|
// 获取设备权限出错回调
|
||||||
|
|
@ -986,6 +1020,7 @@ class MeetingMainLogic extends GetxController with RequestToolMixin {
|
||||||
}*/
|
}*/
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
await joinMeetingToRtc();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 加入会议室
|
/// 加入会议室
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ class MeetingMainState {
|
||||||
|
|
||||||
/// 声网相关
|
/// 声网相关
|
||||||
final String appId = "4a4f7be64fa1404ebda74784fe9ac381";
|
final String appId = "4a4f7be64fa1404ebda74784fe9ac381";
|
||||||
late Rx<RtcEngineEx?> rctEngine = Rx(null);
|
Rx<RtcEngineEx?> rctEngine = Rx<RtcEngineEx?>(null);
|
||||||
/// 是否自动订阅所有视频流
|
/// 是否自动订阅所有视频流
|
||||||
late RxBool isAutoSubscribeVideo = false.obs;
|
late RxBool isAutoSubscribeVideo = false.obs;
|
||||||
/// 是否自动订阅所有音频流
|
/// 是否自动订阅所有音频流
|
||||||
|
|
|
||||||
|
|
@ -222,8 +222,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
visible: state.pageState.value == 1,
|
visible: state.pageState.value == 1,
|
||||||
child: state.isJoinSuccess.value == true &&
|
child: state.isJoinSuccess.value == true &&
|
||||||
null != state.rctEngine.value &&
|
null != state.rctEngine.value &&
|
||||||
null != state.users.value &&
|
state.users.isNotEmpty
|
||||||
state.users.value.isNotEmpty
|
|
||||||
? Stack(
|
? Stack(
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
|
|
@ -305,7 +304,7 @@ class MeetingMainPageState extends State<MeetingMainPage> {
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
: Container(
|
: Container(
|
||||||
color: ColorUtil.Color_57_57_57,
|
color: Colors.red,
|
||||||
/*child: Text('加载反馈:是否成功加入会议室${state.isJoinSuccess.value}-会议室对象${state.rctEngine.value}-成员列表${state.users.value.length}-全员观看ID${state.remoteUid.value}'),*/
|
/*child: Text('加载反馈:是否成功加入会议室${state.isJoinSuccess.value}-会议室对象${state.rctEngine.value}-成员列表${state.users.value.length}-全员观看ID${state.remoteUid.value}'),*/
|
||||||
)),
|
)),
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue