Browse Source

feat(home): 完善直播间跳转逻辑并优化主播展示界面

- 添加 RoomController 和 OverlayController 依赖注入
- 实现进入直播间前隐藏小窗口和退出当前直播间的逻辑
- 添加异常处理和用户提示信息
- 移除主播展示界面中已添加好友的隐藏逻辑
- 更新加好友按钮文本为好友状态显示
- 优化用户交互逻辑防止好友状态下的重复操作
master
Jolie 3 months ago
parent
commit
ff6e056977
2 changed files with 37 additions and 10 deletions
  1. 31
      lib/pages/home/content_card.dart
  2. 16
      lib/widget/live/live_room_anchor_showcase.dart

31
lib/pages/home/content_card.dart

@ -1,11 +1,14 @@
import 'package:cached_network_image/cached_network_image.dart'; 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: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/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/home/user_information_page.dart';
import 'package:dating_touchme_app/pages/message/chat_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:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
// //线//Hi/ // //线//Hi/
class _CardHeader extends StatelessWidget { class _CardHeader extends StatelessWidget {
@ -228,7 +231,29 @@ class _CardHeader extends StatelessWidget {
// //
if (isLive) { if (isLive) {
// //
print('进入直播间');
try {
// 1.
if (Get.isRegistered<OverlayController>()) {
final overlayController = Get.find<OverlayController>();
overlayController.hide();
}
// 2. RoomController
final roomController = Get.isRegistered<RoomController>()
? Get.find<RoomController>()
: 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) { } else if (isOnline) {
// HI按钮点击逻辑 - // HI按钮点击逻辑 -
try { try {

16
lib/widget/live/live_room_anchor_showcase.dart

@ -94,10 +94,6 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
.rtcChannelDetail .rtcChannelDetail
.value .value
?.anchorInfo; ?.anchorInfo;
//
if (anchorInfo?.isFriend == true) {
return const SizedBox.shrink();
}
return Positioned( return Positioned(
bottom: 5.w, bottom: 5.w,
right: 5.w, right: 5.w,
@ -110,7 +106,7 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
child: Center( child: Center(
child: Text( child: Text(
"加好友",
anchorInfo?.isFriend == true ? '好友' : "加好友",
style: TextStyle( style: TextStyle(
fontSize: 11.w, fontSize: 11.w,
color: const Color.fromRGBO(117, 98, 249, 1), color: const Color.fromRGBO(117, 98, 249, 1),
@ -119,6 +115,9 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
), ),
).onTap((){ ).onTap((){
if(anchorInfo?.isFriend == true){
return;
}
if (anchorInfo != null) { if (anchorInfo != null) {
_showGiftPopupForUser(anchorInfo, 2); _showGiftPopupForUser(anchorInfo, 2);
} }
@ -253,7 +252,7 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
), ),
), ),
if(!isCurrentUser && userInfo.isFriend != true)
if(!isCurrentUser)
Positioned( Positioned(
top: 5.w, top: 5.w,
right: 5.w, right: 5.w,
@ -292,7 +291,7 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
child: Center( child: Center(
child: Text( child: Text(
"加好友",
userInfo.isFriend != true ? "加好友" : '好友',
style: TextStyle( style: TextStyle(
fontSize: 11.w, fontSize: 11.w,
color: const Color.fromRGBO(117, 98, 249, 1), color: const Color.fromRGBO(117, 98, 249, 1),
@ -300,6 +299,9 @@ class _LiveRoomAnchorShowcaseState extends State<LiveRoomAnchorShowcase> {
), ),
), ),
).onTap((){ ).onTap((){
if(userInfo.isFriend == true){
return;
}
_showGiftPopupForUser(userInfo, 2); _showGiftPopupForUser(userInfo, 2);
}), }),
), ),

Loading…
Cancel
Save