From 9f989de79667929bb55819a98e6cc6699160f443 Mon Sep 17 00:00:00 2001 From: xiaoyaocz Date: Wed, 13 Mar 2024 17:14:00 +0800 Subject: [PATCH] =?UTF-8?q?TV=E7=9B=B4=E6=92=AD=E5=8D=A1=E7=89=87=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=98=BE=E7=A4=BA=E4=BA=BA=E6=B0=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lib/modules/agreement/agreement_page.dart | 1 - .../detail/category_detail_controller.dart | 1 + .../category/detail/category_detail_page.dart | 1 + .../modules/hot_live/hot_live_controller.dart | 2 + .../lib/modules/hot_live/hot_live_page.dart | 1 + .../search/room/search_room_controller.dart | 1 + .../modules/search/room/search_room_page.dart | 1 + .../lib/widgets/card/live_room_card.dart | 62 +++++++++++++++++-- 8 files changed, 63 insertions(+), 7 deletions(-) diff --git a/simple_live_tv_app/lib/modules/agreement/agreement_page.dart b/simple_live_tv_app/lib/modules/agreement/agreement_page.dart index 3569ade4..6ff5f461 100644 --- a/simple_live_tv_app/lib/modules/agreement/agreement_page.dart +++ b/simple_live_tv_app/lib/modules/agreement/agreement_page.dart @@ -1,7 +1,6 @@ import 'dart:io'; import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:simple_live_tv_app/app/app_focus_node.dart'; diff --git a/simple_live_tv_app/lib/modules/category/detail/category_detail_controller.dart b/simple_live_tv_app/lib/modules/category/detail/category_detail_controller.dart index 044346ec..fe4b94b0 100644 --- a/simple_live_tv_app/lib/modules/category/detail/category_detail_controller.dart +++ b/simple_live_tv_app/lib/modules/category/detail/category_detail_controller.dart @@ -36,6 +36,7 @@ class CategoryDetailController extends BasePageController { title: e.title, cover: e.cover, userName: e.userName, + online: e.online, ), ) .toList(); diff --git a/simple_live_tv_app/lib/modules/category/detail/category_detail_page.dart b/simple_live_tv_app/lib/modules/category/detail/category_detail_page.dart index 9c8762d7..235351a9 100644 --- a/simple_live_tv_app/lib/modules/category/detail/category_detail_page.dart +++ b/simple_live_tv_app/lib/modules/category/detail/category_detail_page.dart @@ -94,6 +94,7 @@ class CategoryDetailPage extends GetView { title: item.title, focusNode: item.focusNode, roomId: item.roomId, + online: item.online, onTap: () { AppNavigator.toLiveRoomDetail( site: controller.site, diff --git a/simple_live_tv_app/lib/modules/hot_live/hot_live_controller.dart b/simple_live_tv_app/lib/modules/hot_live/hot_live_controller.dart index 4203c328..d54d63bf 100644 --- a/simple_live_tv_app/lib/modules/hot_live/hot_live_controller.dart +++ b/simple_live_tv_app/lib/modules/hot_live/hot_live_controller.dart @@ -40,6 +40,7 @@ class HotliveController extends BasePageController { title: e.title, cover: e.cover, userName: e.userName, + online: e.online, )) .toList(); } @@ -57,6 +58,7 @@ class LiveRoomItemExt extends LiveRoomItem { required super.title, required super.cover, required super.userName, + super.online = 0, }); AppFocusNode focusNode = AppFocusNode(); diff --git a/simple_live_tv_app/lib/modules/hot_live/hot_live_page.dart b/simple_live_tv_app/lib/modules/hot_live/hot_live_page.dart index 9f48fea1..c5757ae0 100644 --- a/simple_live_tv_app/lib/modules/hot_live/hot_live_page.dart +++ b/simple_live_tv_app/lib/modules/hot_live/hot_live_page.dart @@ -118,6 +118,7 @@ class HotLivePage extends GetView { title: item.title, focusNode: item.focusNode, roomId: item.roomId, + online: item.online, onTap: () { AppNavigator.toLiveRoomDetail( site: controller.site, diff --git a/simple_live_tv_app/lib/modules/search/room/search_room_controller.dart b/simple_live_tv_app/lib/modules/search/room/search_room_controller.dart index 4430dd12..956fdd49 100644 --- a/simple_live_tv_app/lib/modules/search/room/search_room_controller.dart +++ b/simple_live_tv_app/lib/modules/search/room/search_room_controller.dart @@ -41,6 +41,7 @@ class SearchRoomController extends BasePageController { title: e.title, cover: e.cover, userName: e.userName, + online: e.online, )) .toList(); } diff --git a/simple_live_tv_app/lib/modules/search/room/search_room_page.dart b/simple_live_tv_app/lib/modules/search/room/search_room_page.dart index f3f420e0..bfebaee4 100644 --- a/simple_live_tv_app/lib/modules/search/room/search_room_page.dart +++ b/simple_live_tv_app/lib/modules/search/room/search_room_page.dart @@ -121,6 +121,7 @@ class SearchRoomPage extends GetView { title: item.title, focusNode: item.focusNode, roomId: item.roomId, + online: item.online, onTap: () { AppNavigator.toLiveRoomDetail( site: controller.site, diff --git a/simple_live_tv_app/lib/widgets/card/live_room_card.dart b/simple_live_tv_app/lib/widgets/card/live_room_card.dart index 890aa7a3..038f6aa6 100644 --- a/simple_live_tv_app/lib/widgets/card/live_room_card.dart +++ b/simple_live_tv_app/lib/widgets/card/live_room_card.dart @@ -3,6 +3,7 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; import 'package:simple_live_tv_app/app/app_focus_node.dart'; import 'package:simple_live_tv_app/app/app_style.dart'; +import 'package:simple_live_tv_app/app/utils.dart'; import 'package:simple_live_tv_app/widgets/highlight_widget.dart'; import 'package:simple_live_tv_app/widgets/net_image.dart'; import 'package:marquee/marquee.dart'; @@ -12,6 +13,7 @@ class LiveRoomCard extends StatelessWidget { final String title; final String anchor; final String roomId; + final int online; final bool autofocus; final AppFocusNode focusNode; final Function()? onTap; @@ -21,6 +23,7 @@ class LiveRoomCard extends StatelessWidget { required this.anchor, required this.roomId, required this.focusNode, + required this.online, this.autofocus = false, this.onTap, super.key, @@ -42,12 +45,59 @@ class LiveRoomCard extends StatelessWidget { topLeft: Radius.circular(16.w), topRight: Radius.circular(16.w), ), - child: AspectRatio( - aspectRatio: 16 / 9, - child: NetImage( - cover, - cacheWidth: 400, - ), + child: Stack( + children: [ + AspectRatio( + aspectRatio: 16 / 9, + child: NetImage( + cover, + cacheWidth: 400, + ), + ), + Positioned( + right: 8.w, + top: 8.w, + child: Container( + padding: + AppStyle.edgeInsetsH8.copyWith(top: 4.w, bottom: 4.w), + decoration: BoxDecoration( + color: focusNode.isFoucsed.value + ? Colors.white + : Colors.black54, + borderRadius: AppStyle.radius8, + ), + child: Text.rich( + TextSpan( + text: "", + children: [ + WidgetSpan( + alignment: PlaceholderAlignment.middle, + child: Padding( + padding: AppStyle.edgeInsetsR8, + child: Icon( + Icons.whatshot, + color: focusNode.isFoucsed.value + ? Colors.orange + : Colors.white, + size: 20.w, + ), + ), + ), + TextSpan( + text: Utils.onlineToString(online), + ), + ], + ), + style: TextStyle( + fontSize: 20.w, + color: focusNode.isFoucsed.value + ? Colors.black + : Colors.white, + ), + ), + ), + ), + ], ), // child: Container( // height: 200.w,