diff --git a/assets/images/waitting.png b/assets/images/waitting.png new file mode 100644 index 0000000..ac34914 Binary files /dev/null and b/assets/images/waitting.png differ diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart index e242231..fc1fb2c 100644 --- a/lib/generated/assets.dart +++ b/lib/generated/assets.dart @@ -99,7 +99,6 @@ class Assets { static const String imagesEditAvatarsIcon = 'assets/images/edit_avatars_icon.png'; static const String imagesEmoji = 'assets/images/emoji.png'; static const String imagesEmojiTab = 'assets/images/emoji_tab.png'; - static const String imagesExampleContent = 'assets/images/example_content.png'; static const String imagesFemale = 'assets/images/female.png'; static const String imagesFireIcon = 'assets/images/fire_icon.png'; static const String imagesFirstPay = 'assets/images/first_pay.png'; @@ -188,6 +187,7 @@ class Assets { static const String imagesVoiceBgMessage = 'assets/images/voice_bg_message.png'; static const String imagesVoiceBgMessageSelf = 'assets/images/voice_bg_message_self.png'; static const String imagesVoiceIcon = 'assets/images/voice_icon.png'; + static const String imagesWaitting = 'assets/images/waitting.png'; static const String imagesWallet = 'assets/images/wallet.png'; static const String imagesWechatPay = 'assets/images/wechat_pay.png'; static const String imagesWomenIcon = 'assets/images/women_icon.png'; diff --git a/lib/pages/discover/dating_page.dart b/lib/pages/discover/dating_page.dart index 057ee77..07fb3cb 100644 --- a/lib/pages/discover/dating_page.dart +++ b/lib/pages/discover/dating_page.dart @@ -1,6 +1,7 @@ import 'package:dating_touchme_app/controller/discover/discover_controller.dart'; import 'package:dating_touchme_app/extension/ex_widget.dart'; import 'package:dating_touchme_app/pages/discover/live_item_widget.dart'; +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; @@ -21,6 +22,8 @@ class _DatingPageState extends State late final DiscoverController discoverController; late final TabController _tabController; late final RoomController roomController; + late final EasyRefreshController _refreshController; + @override void initState() { super.initState(); @@ -35,12 +38,17 @@ class _DatingPageState extends State roomController = Get.put(RoomController()); } _tabController = TabController(length: 4, vsync: this); + _refreshController = EasyRefreshController( + controlFinishRefresh: true, + controlFinishLoad: true, + ); discoverController.loadRtcChannelPage(); } @override void dispose() { _tabController.dispose(); + _refreshController.dispose(); super.dispose(); } @@ -114,20 +122,48 @@ class _DatingPageState extends State ), ); } - return SingleChildScrollView( - padding: EdgeInsets.symmetric(vertical: 5.w), - child: Wrap( - spacing: 7.w, - runSpacing: 7.w, - children: discoverController.rtcChannelList.map((channel) { + return EasyRefresh( + controller: _refreshController, + header: const ClassicHeader( + dragText: '下拉刷新', + armedText: '释放刷新', + readyText: '刷新中...', + processingText: '刷新中...', + processedText: '刷新完成', + failedText: '刷新失败', + noMoreText: '没有更多数据', + showMessage: false, + ), + onRefresh: () async { + print('相亲页面下拉刷新被触发'); + try { + await discoverController.refreshRtcChannelPage(); + _refreshController.finishRefresh(IndicatorResult.success); + print('相亲页面刷新完成'); + } catch (e) { + print('相亲页面刷新失败: $e'); + _refreshController.finishRefresh(IndicatorResult.fail); + } + }, + child: GridView.builder( + padding: EdgeInsets.symmetric(vertical: 5.w, horizontal: 0), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, // 每行2个 + crossAxisSpacing: 7.w, // 左右间距 + mainAxisSpacing: 7.w, // 上下间距 + childAspectRatio: 1, // 宽高比 + ), + itemCount: discoverController.rtcChannelList.length, + itemBuilder: (context, index) { + final channel = discoverController.rtcChannelList[index]; print('渲染频道: ${channel.channelId}, ${channel.channelName}'); return LiveItemWidget( channel: channel, channelId: channel.channelId, - ).onTap(() async{ + ).onTap(() async { await roomController.joinChannel(channel.channelId); }); - }).toList(), + }, ), ); }), diff --git a/lib/pages/discover/party_page.dart b/lib/pages/discover/party_page.dart index a5975a0..5438949 100644 --- a/lib/pages/discover/party_page.dart +++ b/lib/pages/discover/party_page.dart @@ -1,5 +1,6 @@ import 'package:dating_touchme_app/controller/discover/discover_controller.dart'; import 'package:dating_touchme_app/pages/discover/live_item_widget.dart'; +import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; diff --git a/lib/widget/live/live_room_anchor_showcase.dart b/lib/widget/live/live_room_anchor_showcase.dart index eda01bf..6b4dbef 100644 --- a/lib/widget/live/live_room_anchor_showcase.dart +++ b/lib/widget/live/live_room_anchor_showcase.dart @@ -1,6 +1,5 @@ import 'package:agora_rtc_engine/agora_rtc_engine.dart'; import 'package:dating_touchme_app/controller/discover/room_controller.dart'; -import 'package:dating_touchme_app/controller/global.dart'; import 'package:dating_touchme_app/generated/assets.dart'; import 'package:dating_touchme_app/model/rtc/rtc_channel_detail.dart'; import 'package:dating_touchme_app/rtc/rtc_manager.dart'; @@ -131,8 +130,7 @@ class _LiveRoomAnchorShowcaseState extends State { if (_roomController.rtcChannelDetail.value?.anchorInfo == null || engine == null) { return _buildWaitingPlaceholder(); } - print('joined: $joined'); - ClientRoleType role = _rtcManager.clientRole; + Get.log("buildAnchorVideo"); return ClipRRect( borderRadius: BorderRadius.all(Radius.circular(9.w)), child: SizedBox( @@ -161,12 +159,13 @@ class _LiveRoomAnchorShowcaseState extends State { } Widget _buildWaitingPlaceholder() { + Get.log("buildWaitingPlaceholder"); return Container( width: 177.w, height: 175.w, decoration: BoxDecoration( borderRadius: BorderRadius.all(Radius.circular(9.w)), - color: const Color.fromRGBO(47, 10, 94, 1), + color: Colors.grey.withOpacity(0.5), ), child: Center( child: Text(