diff --git a/lib/controller/discover/room_controller.dart b/lib/controller/discover/room_controller.dart index bdbf2c2..7029b7e 100644 --- a/lib/controller/discover/room_controller.dart +++ b/lib/controller/discover/room_controller.dart @@ -15,11 +15,13 @@ import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:get/get.dart'; import 'package:permission_handler/permission_handler.dart'; +import 'package:tdesign_flutter/tdesign_flutter.dart'; import '../../model/live/live_chat_message.dart'; import '../../pages/discover/live_end_page.dart'; import '../../pages/mine/real_name_page.dart'; import '../../pages/setting/match_spread_page.dart'; +import '../../widget/live/live_recharge_popup.dart'; import 'svga_player_manager.dart'; // 当前角色 @@ -418,6 +420,25 @@ class RoomController extends GetxController with WidgetsBindingObserver { ); return; } + if (response.data.isSuccess && !response.data.data['success']) { + final code = response.data.data['code']; + if (code == 'E0002') { + // 玫瑰不足,显示 toast 并弹出充值弹框 + SmartDialog.showToast('玫瑰不足请充值'); + Get.log('❌ 送礼失败: ${response.data.data}'); + // 使用 addPostFrameCallback 确保在下一帧显示弹框,避免与 toast 冲突 + WidgetsBinding.instance.addPostFrameCallback((_) { + SmartDialog.show( + alignment: Alignment.bottomCenter, + maskColor: Colors.black.withOpacity(0.5), + builder: (_) => const LiveRechargePopup(), + ); + }); + } else { + SmartDialog.showToast('发送礼物失败'); + } + return; + } // 消费成功后再添加到本地播放队列 final svgaManager = SvgaPlayerManager.instance; diff --git a/lib/widget/message/call_item.dart b/lib/widget/message/call_item.dart index ca55b31..77f1c91 100644 --- a/lib/widget/message/call_item.dart +++ b/lib/widget/message/call_item.dart @@ -64,6 +64,7 @@ class CallItem extends StatelessWidget { /// 从消息中解析通话类型 CallType? _getCallType() { final callInfo = _parseCallInfo(); + Get.log('通话信息: $callInfo'); if (callInfo != null) { final callTypeStr = callInfo['callType'] as String?; if (callTypeStr == 'voice') { @@ -145,11 +146,11 @@ class CallItem extends StatelessWidget { // 通话中,显示时长 return _formatDuration(duration); } else if (callStatus == CallStatus.missed) { - return callType == CallType.video ? '未接听视频通话' : '未接听语音通话'; + return '未接听'; } else if (callStatus == CallStatus.cancelled) { - return callType == CallType.video ? '已取消视频通话' : '已取消语音通话'; + return '已取消'; } else if (callStatus == CallStatus.rejected) { - return callType == CallType.video ? '已拒绝视频通话' : '已拒绝语音通话'; + return '已拒绝'; } else { return callType == CallType.video ? '视频通话' : '语音通话'; }