From 7597e44d810c7e16d1e9d4b52aad7de5f1646869 Mon Sep 17 00:00:00 2001 From: Jolie <412895109@qq.com> Date: Sat, 27 Dec 2025 17:52:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(call):=20=E6=B7=BB=E5=8A=A0=E9=80=9A?= =?UTF-8?q?=E8=AF=9D=E7=AD=89=E5=BE=85=E7=8A=B6=E6=80=81=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E7=A4=BC=E7=89=A9=E5=85=85=E5=80=BC=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 waitCalling 等待接通通话状态 - 优化聊天控制器中的消息发送成功处理逻辑 - 实现玫瑰不足时自动弹出充值弹框功能 - 集成 tdesign 组件库和直播充值弹窗组件 - 改进礼物发送失败的错误处理和用户反馈机制 --- lib/controller/message/call_manager.dart | 4 +-- lib/controller/message/chat_controller.dart | 36 ++++++++++++++------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/lib/controller/message/call_manager.dart b/lib/controller/message/call_manager.dart index 270fdd0..5e9a2a4 100644 --- a/lib/controller/message/call_manager.dart +++ b/lib/controller/message/call_manager.dart @@ -16,11 +16,11 @@ enum CallType { /// 通话状态 enum CallStatus { + waitCalling, // 等待接通 calling, // 通话中 missed, // 未接听 cancelled, // 已取消 rejected, // 已拒绝 - connected, // 已接通(暂时用不到,但保留用于未来扩展) } /// 通话管理器,单例模式,统一管理通话逻辑 @@ -331,7 +331,7 @@ class CallManager extends GetxController { 'call', callParams, ); - + return message != null; } catch (e) { print('❌ [CallManager] 发送通话消息失败: $e'); diff --git a/lib/controller/message/chat_controller.dart b/lib/controller/message/chat_controller.dart index eed4816..9676a9b 100644 --- a/lib/controller/message/chat_controller.dart +++ b/lib/controller/message/chat_controller.dart @@ -1,11 +1,14 @@ import 'package:get/get.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:flutter/material.dart'; +import 'package:tdesign_flutter/tdesign_flutter.dart'; import '../../im/im_manager.dart'; import '../../im/chat_presence_manager.dart'; import '../../model/home/marriage_data.dart'; import '../../model/live/gift_product_model.dart'; import '../../network/network_service.dart'; +import '../../widget/live/live_recharge_popup.dart'; import 'package:im_flutter_sdk/im_flutter_sdk.dart'; import 'conversation_controller.dart'; @@ -1080,15 +1083,15 @@ class ChatController extends GetxController { try { final message = await IMManager.instance.sendCustomMessage(userId, 'call', callParams); if (message != null) { - // 发送成功,替换临时消息 - final index = messages.indexWhere((msg) => msg.msgId == tempMessage.msgId); - if (index != -1) { + // 发送成功,替换临时消息 + final index = messages.indexWhere((msg) => msg.msgId == tempMessage.msgId); + if (index != -1) { messages[index] = message; - } - update(); - // 更新会话列表 - _refreshConversationList(); - return true; + } + update(); + // 更新会话列表 + _refreshConversationList(); + return true; } else { // 发送失败,消息状态会自动变为FAIL update(); @@ -1743,9 +1746,20 @@ class ChatController extends GetxController { ); if (response.data.isSuccess && !response.data.data['success']) { - SmartDialog.showToast( - response.data.data['code'] == 'E0002' ? '玫瑰不足请充值' : '发送礼物失败', - ); + final code = response.data.data['code']; + if (code == 'E0002') { + // 玫瑰不足,显示 toast 并弹出充值弹框 + SmartDialog.showToast('玫瑰不足请充值'); + SmartDialog.show( + alignment: Alignment.bottomCenter, + maskColor: Get.context != null + ? TDTheme.of(Get.context!).fontGyColor2 + : Colors.black.withOpacity(0.5), + builder: (_) => const LiveRechargePopup(), + ); + } else { + SmartDialog.showToast('发送礼物失败'); + } return false; }