diff --git a/lib/pages/home/content_card.dart b/lib/pages/home/content_card.dart index 104b2ad..2912480 100644 --- a/lib/pages/home/content_card.dart +++ b/lib/pages/home/content_card.dart @@ -1,11 +1,14 @@ import 'package:cached_network_image/cached_network_image.dart'; +import 'package:dating_touchme_app/controller/discover/room_controller.dart'; +import 'package:dating_touchme_app/controller/overlay_controller.dart'; import 'package:dating_touchme_app/generated/assets.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; import 'package:dating_touchme_app/model/home/marriage_data.dart'; +import 'package:dating_touchme_app/pages/discover/live_room_page.dart'; import 'package:dating_touchme_app/pages/home/user_information_page.dart'; import 'package:dating_touchme_app/pages/message/chat_page.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; +import 'package:get/get.dart'; // 通用头部组件:头像/昵称/在线/认证/Hi/直播中徽标 class _CardHeader extends StatelessWidget { @@ -228,7 +231,29 @@ class _CardHeader extends StatelessWidget { // 点击事件处理 if (isLive) { // 进入直播间逻辑 - print('进入直播间'); + try { + // 1. 隐藏直播间小窗口(如果存在) + if (Get.isRegistered()) { + final overlayController = Get.find(); + overlayController.hide(); + } + + // 2. 获取 RoomController 实例 + final roomController = Get.isRegistered() + ? Get.find() + : Get.put(RoomController()); + + // 3. 如果当前已经在直播间,先退出当前直播间 + // leaveChannel 内部会处理未在频道时的情况 + await roomController.leaveChannel(); + + // 4. 跳转到新的直播间页面 + // 这里暂时使用 id: 0,实际频道信息由后端/进入逻辑决定 + await Get.to(() => const LiveRoomPage(id: 0)); + } catch (e) { + print('❌ [ContentCard] 进入直播间失败: $e'); + SmartDialog.showToast('进入直播间失败,请重试'); + } } else if (isOnline) { // HI按钮点击逻辑 - 跳转到聊天页面 try { diff --git a/lib/widget/live/live_room_anchor_showcase.dart b/lib/widget/live/live_room_anchor_showcase.dart index 4ccf29d..b0f28d1 100644 --- a/lib/widget/live/live_room_anchor_showcase.dart +++ b/lib/widget/live/live_room_anchor_showcase.dart @@ -94,10 +94,6 @@ class _LiveRoomAnchorShowcaseState extends State { .rtcChannelDetail .value ?.anchorInfo; - // 如果已经是好友,不显示加好友按钮 - if (anchorInfo?.isFriend == true) { - return const SizedBox.shrink(); - } return Positioned( bottom: 5.w, right: 5.w, @@ -110,7 +106,7 @@ class _LiveRoomAnchorShowcaseState extends State { ), child: Center( child: Text( - "加好友", + anchorInfo?.isFriend == true ? '好友' : "加好友", style: TextStyle( fontSize: 11.w, color: const Color.fromRGBO(117, 98, 249, 1), @@ -119,6 +115,9 @@ class _LiveRoomAnchorShowcaseState extends State { ), ), ).onTap((){ + if(anchorInfo?.isFriend == true){ + return; + } if (anchorInfo != null) { _showGiftPopupForUser(anchorInfo, 2); } @@ -253,7 +252,7 @@ class _LiveRoomAnchorShowcaseState extends State { ), ), ), - if(!isCurrentUser && userInfo.isFriend != true) + if(!isCurrentUser) Positioned( top: 5.w, right: 5.w, @@ -292,7 +291,7 @@ class _LiveRoomAnchorShowcaseState extends State { ), child: Center( child: Text( - "加好友", + userInfo.isFriend != true ? "加好友" : '好友', style: TextStyle( fontSize: 11.w, color: const Color.fromRGBO(117, 98, 249, 1), @@ -300,6 +299,9 @@ class _LiveRoomAnchorShowcaseState extends State { ), ), ).onTap((){ + if(userInfo.isFriend == true){ + return; + } _showGiftPopupForUser(userInfo, 2); }), ),