From 3b5879284f9a6bfd65720ae74de3ca02629c7357 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Mon, 29 Dec 2025 23:55:22 +0800 Subject: [PATCH] =?UTF-8?q?feat(call):=20=E6=B7=BB=E5=8A=A0=E9=A2=91?= =?UTF-8?q?=E9=81=93ID=E6=94=AF=E6=8C=81=E5=B9=B6=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=80=9A=E8=AF=9D=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在通话控制器中将初始状态从'missed'更改为'waitCalling' - 在IM管理器中添加channelId字段解析和传递 - 在视频通话邀请对话框中添加channelId参数 - 在视频通话页面中添加channelId参数支持 - 更新通话消息发送时包含频道ID信息 --- lib/controller/message/call_controller.dart | 2 +- lib/im/im_manager.dart | 3 +++ lib/pages/message/video_call_page.dart | 2 ++ lib/widget/message/video_call_invite_dialog.dart | 2 ++ 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/controller/message/call_controller.dart b/lib/controller/message/call_controller.dart index 7f11024..69043a2 100644 --- a/lib/controller/message/call_controller.dart +++ b/lib/controller/message/call_controller.dart @@ -198,7 +198,7 @@ class CallController extends GetxController { await _sendCallMessage( targetUserId: targetUserId, callType: callTypeStr, - callStatus: 'missed', // 初始状态为未接听,等待对方响应 + callStatus: 'waitCalling', // 初始状态为未接听,等待对方响应 channelId: channelData.channelId, // 传递频道ID chatController: chatController, ); diff --git a/lib/im/im_manager.dart b/lib/im/im_manager.dart index d248bb7..f1362d1 100644 --- a/lib/im/im_manager.dart +++ b/lib/im/im_manager.dart @@ -1434,6 +1434,7 @@ class IMManager { Map? callInfo; String? callType; String? callStatus; + String? channelId; try { // 自定义消息 @@ -1443,6 +1444,7 @@ class IMManager { final params = customBody.params!; callType = params['callType'] ?? 'voice'; callStatus = params['callStatus'] ?? 'missed'; + channelId = params['channelId'] ?? ''; callInfo = { 'callType': callType, 'callStatus': callStatus, @@ -1514,6 +1516,7 @@ class IMManager { Get.to(() => VideoCallPage( targetUserId: fromId, isInitiator: false, + channelId: channelId, )); }, onAccept: () async { diff --git a/lib/pages/message/video_call_page.dart b/lib/pages/message/video_call_page.dart index 89e8fd0..17378a6 100644 --- a/lib/pages/message/video_call_page.dart +++ b/lib/pages/message/video_call_page.dart @@ -20,6 +20,7 @@ import '../../model/home/marriage_data.dart'; class VideoCallPage extends StatefulWidget { final String targetUserId; final String? callType; + final String? channelId; final MarriageData? userData; final bool isInitiator; // 是否是发起方 @@ -27,6 +28,7 @@ class VideoCallPage extends StatefulWidget { super.key, required this.targetUserId, this.callType, + this.channelId, this.userData, this.isInitiator = true, }); diff --git a/lib/widget/message/video_call_invite_dialog.dart b/lib/widget/message/video_call_invite_dialog.dart index 9e80b34..f51c8f3 100644 --- a/lib/widget/message/video_call_invite_dialog.dart +++ b/lib/widget/message/video_call_invite_dialog.dart @@ -8,6 +8,7 @@ class VideoCallInviteDialog extends StatelessWidget { final String avatarUrl; final String nickName; final String? callType; + final String? channelId; final VoidCallback? onTap; // 点击弹框主体区域(只跳转,不接通) final VoidCallback? onAccept; // 点击接通按钮(接通并跳转) final VoidCallback? onReject; // 点击挂断按钮(拒绝) @@ -17,6 +18,7 @@ class VideoCallInviteDialog extends StatelessWidget { required this.avatarUrl, required this.nickName, this.callType, + this.channelId, this.onTap, this.onAccept, this.onReject,