opt to live room

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-08-04 18:53:08 +08:00
parent cf84a92808
commit deb48d1ada
20 changed files with 71 additions and 43 deletions

View File

@@ -3,10 +3,10 @@ import 'package:PiliPlus/models/common/avatar_badge_type.dart';
import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/image_util.dart'; import 'package:PiliPlus/utils/image_util.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:PiliPlus/utils/storage_pref.dart';
import 'package:cached_network_image/cached_network_image.dart'; import 'package:cached_network_image/cached_network_image.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
class PendantAvatar extends StatelessWidget { class PendantAvatar extends StatelessWidget {
final BadgeType _badgeType; final BadgeType _badgeType;
@@ -14,7 +14,7 @@ class PendantAvatar extends StatelessWidget {
final double size; final double size;
final double badgeSize; final double badgeSize;
final String? garbPendantImage; final String? garbPendantImage;
final dynamic roomId; final int? roomId;
final VoidCallback? onTap; final VoidCallback? onTap;
const PendantAvatar({ const PendantAvatar({
@@ -71,7 +71,7 @@ class PendantAvatar extends StatelessWidget {
Positioned( Positioned(
bottom: 0, bottom: 0,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed('/liveRoom?roomid=$roomId'), onTap: () => PageUtils.toLiveRoom(roomId),
child: Container( child: Container(
padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1), padding: const EdgeInsets.symmetric(horizontal: 5, vertical: 1),
decoration: BoxDecoration( decoration: BoxDecoration(

View File

@@ -16,7 +16,6 @@ import 'package:PiliPlus/utils/duration_util.dart';
import 'package:PiliPlus/utils/page_utils.dart'; import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.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';
// 视频卡片 - 水平布局 // 视频卡片 - 水平布局
class VideoCardH extends StatelessWidget { class VideoCardH extends StatelessWidget {
@@ -81,7 +80,7 @@ class VideoCardH extends StatelessWidget {
if (videoItem case SearchVideoItemModel item) { if (videoItem case SearchVideoItemModel item) {
int? roomId = item.id; int? roomId = item.id;
if (roomId != null) { if (roomId != null) {
Get.toNamed('/liveRoom?roomid=$roomId'); PageUtils.toLiveRoom(roomId);
} }
} else { } else {
SmartDialog.showToast( SmartDialog.showToast(
@@ -96,6 +95,7 @@ class VideoCardH extends StatelessWidget {
return; return;
} }
} }
try { try {
final int? cid = final int? cid =
videoItem.cid ?? videoItem.cid ??

View File

@@ -1,8 +1,8 @@
import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
Widget livePanel( Widget livePanel(
ThemeData theme, ThemeData theme,
@@ -20,7 +20,7 @@ Widget livePanel(
children: [ children: [
GestureDetector( GestureDetector(
behavior: HitTestBehavior.opaque, behavior: HitTestBehavior.opaque,
onTap: () => Get.toNamed('/liveRoom?roomid=${content.live?.id}'), onTap: () => PageUtils.toLiveRoom(content.live?.id),
onLongPress: () { onLongPress: () {
Feedback.forLongPress(context); Feedback.forLongPress(context);
imageSaveDialog( imageSaveDialog(

View File

@@ -3,8 +3,8 @@ import 'package:PiliPlus/common/widgets/badge.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/common/badge_type.dart'; import 'package:PiliPlus/models/common/badge_type.dart';
import 'package:PiliPlus/models/dynamics/result.dart'; import 'package:PiliPlus/models/dynamics/result.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
Widget livePanelSub( Widget livePanelSub(
ThemeData theme, ThemeData theme,
@@ -24,7 +24,7 @@ Widget livePanelSub(
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace), padding: const EdgeInsets.symmetric(horizontal: StyleString.safeSpace),
child: GestureDetector( child: GestureDetector(
onTap: () => Get.toNamed('/liveRoom?roomid=${content.roomId}'), onTap: () => PageUtils.toLiveRoom(content.roomId),
child: LayoutBuilder( child: LayoutBuilder(
builder: (context, box) { builder: (context, box) {
double width = box.maxWidth; double width = box.maxWidth;

View File

@@ -5,6 +5,7 @@ import 'package:PiliPlus/models/dynamics/up.dart';
import 'package:PiliPlus/pages/dynamics/controller.dart'; import 'package:PiliPlus/pages/dynamics/controller.dart';
import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/pages/live_follow/view.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -144,7 +145,7 @@ class _UpPanelState extends State<UpPanel> {
feedBack(); feedBack();
switch (data) { switch (data) {
case LiveUserItem(): case LiveUserItem():
Get.toNamed('/liveRoom?roomid=${data.roomId}'); PageUtils.toLiveRoom(data.roomId);
case UpItem(): case UpItem():
_onSelect(data); _onSelect(data);
break; break;

View File

@@ -56,7 +56,7 @@ class HistoryItem extends StatelessWidget {
); );
} else if (item.history.business == 'live') { } else if (item.history.business == 'live') {
if (item.liveStatus == 1) { if (item.liveStatus == 1) {
Get.toNamed('/liveRoom?roomid=${item.history.oid}'); PageUtils.toLiveRoom(item.history.oid);
} else { } else {
SmartDialog.showToast('直播未开播'); SmartDialog.showToast('直播未开播');
} }

View File

@@ -17,6 +17,7 @@ import 'package:PiliPlus/pages/live_area/view.dart';
import 'package:PiliPlus/pages/live_follow/view.dart'; import 'package:PiliPlus/pages/live_follow/view.dart';
import 'package:PiliPlus/pages/search/widgets/search_text.dart'; import 'package:PiliPlus/pages/search/widgets/search_text.dart';
import 'package:PiliPlus/utils/grid.dart'; import 'package:PiliPlus/utils/grid.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -292,7 +293,7 @@ class _LivePageState extends CommonPageState<LivePage, LiveController>
return SizedBox( return SizedBox(
width: 65, width: 65,
child: GestureDetector( child: GestureDetector(
onTap: () => Get.toNamed('/liveRoom?roomid=${item.roomid}'), onTap: () => PageUtils.toLiveRoom(item.roomid),
onLongPress: () { onLongPress: () {
Feedback.forLongPress(context); Feedback.forLongPress(context);
Get.toNamed('/member?mid=${item.uid}'); Get.toNamed('/member?mid=${item.uid}');

View File

@@ -3,8 +3,8 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart';
import 'package:PiliPlus/utils/num_util.dart'; import 'package:PiliPlus/utils/num_util.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
// 视频卡片 - 垂直布局 // 视频卡片 - 垂直布局
class LiveCardVApp extends StatelessWidget { class LiveCardVApp extends StatelessWidget {
@@ -20,7 +20,7 @@ class LiveCardVApp extends StatelessWidget {
return Card( return Card(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed('/liveRoom?roomid=${item.roomid}'), onTap: () => PageUtils.toLiveRoom(item.roomid),
onLongPress: () => imageSaveDialog( onLongPress: () => imageSaveDialog(
title: item.title, title: item.title,
cover: item.cover, cover: item.cover,

View File

@@ -2,8 +2,8 @@ import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models_new/live/live_follow/item.dart'; import 'package:PiliPlus/models_new/live/live_follow/item.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
// 视频卡片 - 垂直布局 // 视频卡片 - 垂直布局
class LiveCardVFollow extends StatelessWidget { class LiveCardVFollow extends StatelessWidget {
@@ -19,7 +19,7 @@ class LiveCardVFollow extends StatelessWidget {
return Card( return Card(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed('/liveRoom?roomid=${liveItem.roomid}'), onTap: () => PageUtils.toLiveRoom(liveItem.roomid),
onLongPress: () => imageSaveDialog( onLongPress: () => imageSaveDialog(
title: liveItem.title, title: liveItem.title,
cover: liveItem.roomCover, cover: liveItem.roomCover,

View File

@@ -30,7 +30,7 @@ class LiveRoomController extends GetxController {
LiveRoomController(this.heroTag); LiveRoomController(this.heroTag);
final String heroTag; final String heroTag;
int roomId = int.parse(Get.parameters['roomid']!); int roomId = Get.arguments;
PlPlayerController plPlayerController = PlPlayerController.getInstance( PlPlayerController plPlayerController = PlPlayerController.getInstance(
isLive: true, isLive: true,
); );

View File

@@ -37,8 +37,7 @@ class LiveRoomPage extends StatefulWidget {
class _LiveRoomPageState extends State<LiveRoomPage> class _LiveRoomPageState extends State<LiveRoomPage>
with WidgetsBindingObserver { with WidgetsBindingObserver {
late final String heroTag; final String heroTag = Utils.generateRandomString(6);
late final int _roomId;
late final LiveRoomController _liveRoomController; late final LiveRoomController _liveRoomController;
late final PlPlayerController plPlayerController; late final PlPlayerController plPlayerController;
bool get isFullScreen => plPlayerController.isFullScreen.value; bool get isFullScreen => plPlayerController.isFullScreen.value;
@@ -58,8 +57,6 @@ class _LiveRoomPageState extends State<LiveRoomPage>
void initState() { void initState() {
super.initState(); super.initState();
WidgetsBinding.instance.addObserver(this); WidgetsBinding.instance.addObserver(this);
_roomId = int.parse(Get.parameters['roomid'] ?? '-1');
heroTag = Utils.makeHeroTag(_roomId);
_liveRoomController = Get.put( _liveRoomController = Get.put(
LiveRoomController(heroTag), LiveRoomController(heroTag),
tag: heroTag, tag: heroTag,
@@ -528,7 +525,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
child: LiveRoomChat( child: LiveRoomChat(
key: chatKey, key: chatKey,
isPP: isPP ?? false, isPP: isPP ?? false,
roomId: _roomId, roomId: _liveRoomController.roomId,
liveRoomController: _liveRoomController, liveRoomController: _liveRoomController,
), ),
); );

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/models/common/live_search_type.dart';
import 'package:PiliPlus/pages/live_search/child/controller.dart'; import 'package:PiliPlus/pages/live_search/child/controller.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
import 'package:PiliPlus/utils/id_utils.dart'; import 'package:PiliPlus/utils/id_utils.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -41,7 +42,7 @@ class LiveSearchController extends GetxController
void submit() { void submit() {
if (editingController.text.isNotEmpty) { if (editingController.text.isNotEmpty) {
if (IdUtils.digitOnlyRegExp.hasMatch(editingController.text)) { if (IdUtils.digitOnlyRegExp.hasMatch(editingController.text)) {
Get.toNamed('/liveRoom?roomid=${editingController.text}'); PageUtils.toLiveRoom(int.parse(editingController.text));
} else { } else {
hasData.value = true; hasData.value = true;
roomCtr roomCtr

View File

@@ -3,8 +3,8 @@ import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models_new/live/live_search/room_item.dart'; import 'package:PiliPlus/models_new/live/live_search/room_item.dart';
import 'package:PiliPlus/utils/num_util.dart'; import 'package:PiliPlus/utils/num_util.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
// 视频卡片 - 垂直布局 // 视频卡片 - 垂直布局
class LiveCardVSearch extends StatelessWidget { class LiveCardVSearch extends StatelessWidget {
@@ -20,7 +20,7 @@ class LiveCardVSearch extends StatelessWidget {
return Card( return Card(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed('/liveRoom?roomid=${item.roomid}'), onTap: () => PageUtils.toLiveRoom(item.roomid),
onLongPress: () => imageSaveDialog( onLongPress: () => imageSaveDialog(
title: item.title, title: item.title,
cover: item.cover, cover: item.cover,

View File

@@ -2,8 +2,8 @@ import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/common/image_type.dart'; import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/models_new/live/live_search/user_item.dart'; import 'package:PiliPlus/models_new/live/live_search/user_item.dart';
import 'package:PiliPlus/utils/num_util.dart'; import 'package:PiliPlus/utils/num_util.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
class LiveSearchUserItem extends StatelessWidget { class LiveSearchUserItem extends StatelessWidget {
const LiveSearchUserItem({ const LiveSearchUserItem({
@@ -23,9 +23,7 @@ class LiveSearchUserItem extends StatelessWidget {
return Material( return Material(
type: MaterialType.transparency, type: MaterialType.transparency,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed( onTap: () => PageUtils.toLiveRoom(item.roomid),
'/liveRoom?roomid=${item.roomid}',
),
child: Row( child: Row(
children: [ children: [
const SizedBox(width: 15), const SizedBox(width: 15),

View File

@@ -14,6 +14,7 @@ import 'package:PiliPlus/pages/video/reply/widgets/reply_item_grpc.dart';
import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:PiliPlus/pages/video/reply_reply/view.dart';
import 'package:PiliPlus/utils/date_util.dart'; import 'package:PiliPlus/utils/date_util.dart';
import 'package:PiliPlus/utils/feed_back.dart'; import 'package:PiliPlus/utils/feed_back.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart'; import 'package:PiliPlus/utils/utils.dart';
import 'package:easy_debounce/easy_throttle.dart'; import 'package:easy_debounce/easy_throttle.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -162,9 +163,8 @@ class _MatchInfoPageState extends CommonDynPageState<MatchInfoPage> {
visualDensity: VisualDensity.compact, visualDensity: VisualDensity.compact,
tapTargetSize: MaterialTapTargetSize.shrinkWrap, tapTargetSize: MaterialTapTargetSize.shrinkWrap,
), ),
onPressed: () => Get.toNamed( onPressed: () =>
'/liveRoom?roomid=${data.liveRoom}', PageUtils.toLiveRoom(data.liveRoom),
),
child: const Text('看直播'), child: const Text('看直播'),
) )
else if (data.contestStatus == 3) else if (data.contestStatus == 3)

View File

@@ -2,8 +2,8 @@ import 'package:PiliPlus/common/constants.dart';
import 'package:PiliPlus/common/widgets/image/image_save.dart'; import 'package:PiliPlus/common/widgets/image/image_save.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart'; import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/models/search/result.dart'; import 'package:PiliPlus/models/search/result.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart';
class LiveItem extends StatelessWidget { class LiveItem extends StatelessWidget {
final SearchLiveItemModel liveItem; final SearchLiveItemModel liveItem;
@@ -16,7 +16,7 @@ class LiveItem extends StatelessWidget {
return Card( return Card(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
child: InkWell( child: InkWell(
onTap: () => Get.toNamed('/liveRoom?roomid=${liveItem.roomid}'), onTap: () => PageUtils.toLiveRoom(liveItem.roomid),
onLongPress: () => imageSaveDialog( onLongPress: () => imageSaveDialog(
title: liveItem.title.map((item) => item.text).join(), title: liveItem.title.map((item) => item.text).join(),
cover: liveItem.cover, cover: liveItem.cover,

View File

@@ -203,7 +203,13 @@ class ChatItem extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
GestureDetector( GestureDetector(
onTap: () => Get.toNamed('/liveRoom?roomid=${content['sourceID']}'), onTap: () {
var roomId = content['sourceID'];
if (roomId is String) {
roomId = int.parse(roomId);
}
PageUtils.toLiveRoom(roomId);
},
child: NetworkImgLayer( child: NetworkImgLayer(
width: 220, width: 220,
height: 220 * 9 / 16, height: 220 * 9 / 16,

View File

@@ -424,6 +424,8 @@ class PlPlayerController {
} }
} }
static PlPlayerController? get instance => _instance;
static bool instanceExists() { static bool instanceExists() {
return _instance != null; return _instance != null;
} }
@@ -476,8 +478,7 @@ class PlPlayerController {
Box video = GStorage.video; Box video = GStorage.video;
// 添加一个私有构造函数 // 添加一个私有构造函数
PlPlayerController._({bool isLive = false}) { PlPlayerController._() {
_isLive = isLive;
if (!Accounts.heartbeat.isLogin || Pref.historyPause) { if (!Accounts.heartbeat.isLogin || Pref.historyPause) {
enableHeart = false; enableHeart = false;
} }
@@ -504,7 +505,7 @@ class PlPlayerController {
// 获取实例 传参 // 获取实例 传参
static PlPlayerController getInstance({bool isLive = false}) { static PlPlayerController getInstance({bool isLive = false}) {
// 如果实例尚未创建,则创建一个新实例 // 如果实例尚未创建,则创建一个新实例
_instance ??= PlPlayerController._(isLive: isLive); _instance ??= PlPlayerController._().._isLive = isLive;
_instance!._playerCount.value += 1; _instance!._playerCount.value += 1;
return _instance!; return _instance!;
} }

View File

@@ -191,7 +191,7 @@ class PiliScheme {
// bilibili://live/12345678?extra_jump_from=1&from=1&is_room_feed=1&h5awaken=random // bilibili://live/12345678?extra_jump_from=1&from=1&is_room_feed=1&h5awaken=random
String? roomId = uriDigitRegExp.firstMatch(path)?.group(1); String? roomId = uriDigitRegExp.firstMatch(path)?.group(1);
if (roomId != null) { if (roomId != null) {
PageUtils.toDupNamed('/liveRoom?roomid=$roomId', off: off); PageUtils.toLiveRoom(int.parse(roomId), off: off);
return true; return true;
} }
return false; return false;
@@ -561,7 +561,7 @@ class PiliScheme {
if (host.contains('live.bilibili.com')) { if (host.contains('live.bilibili.com')) {
String? roomId = uriDigitRegExp.firstMatch(path)?.group(1); String? roomId = uriDigitRegExp.firstMatch(path)?.group(1);
if (roomId != null) { if (roomId != null) {
PageUtils.toDupNamed('/liveRoom?roomid=$roomId', off: off); PageUtils.toLiveRoom(int.parse(roomId), off: off);
return true; return true;
} }
launchURL(); launchURL();

View File

@@ -14,6 +14,7 @@ import 'package:PiliPlus/pages/contact/view.dart';
import 'package:PiliPlus/pages/fav_panel/view.dart'; import 'package:PiliPlus/pages/fav_panel/view.dart';
import 'package:PiliPlus/pages/share/view.dart'; import 'package:PiliPlus/pages/share/view.dart';
import 'package:PiliPlus/pages/video/introduction/ugc/widgets/menu_row.dart'; import 'package:PiliPlus/pages/video/introduction/ugc/widgets/menu_row.dart';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/services/shutdown_timer_service.dart'; import 'package:PiliPlus/services/shutdown_timer_service.dart';
import 'package:PiliPlus/utils/app_scheme.dart'; import 'package:PiliPlus/utils/app_scheme.dart';
import 'package:PiliPlus/utils/extension.dart'; import 'package:PiliPlus/utils/extension.dart';
@@ -444,7 +445,7 @@ class PageUtils {
case 'DYNAMIC_TYPE_LIVE_RCMD': case 'DYNAMIC_TYPE_LIVE_RCMD':
DynamicLiveModel liveRcmd = DynamicLiveModel liveRcmd =
item.modules.moduleDynamic!.major!.liveRcmd!; item.modules.moduleDynamic!.major!.liveRcmd!;
toDupNamed('/liveRoom?roomid=${liveRcmd.roomId}'); toLiveRoom(liveRcmd.roomId);
break; break;
/// 合集查看 /// 合集查看
@@ -663,6 +664,24 @@ class PageUtils {
); );
} }
static void toLiveRoom(
int? roomId, {
bool off = false,
}) {
if (roomId == null) {
return;
}
if (PlPlayerController.instanceExists()) {
SmartDialog.showToast('unsupported');
return;
}
if (off) {
Get.offNamed('/liveRoom', arguments: roomId);
} else {
Get.toNamed('/liveRoom', arguments: roomId);
}
}
static void toVideoPage({ static void toVideoPage({
VideoType videoType = VideoType.ugc, VideoType videoType = VideoType.ugc,
int? aid, int? aid,
@@ -679,6 +698,10 @@ class PageUtils {
bool preventDuplicates = true, bool preventDuplicates = true,
bool off = false, bool off = false,
}) { }) {
if (PlPlayerController.instance?.isLive == true) {
SmartDialog.showToast('Living');
return;
}
final arguments = { final arguments = {
'aid': aid ?? IdUtils.bv2av(bvid!), 'aid': aid ?? IdUtils.bv2av(bvid!),
'bvid': bvid ?? IdUtils.av2bv(aid!), 'bvid': bvid ?? IdUtils.av2bv(aid!),
@@ -698,14 +721,14 @@ class PageUtils {
'/videoV', '/videoV',
arguments: arguments, arguments: arguments,
id: id, id: id,
preventDuplicates: preventDuplicates, preventDuplicates: false,
); );
} else { } else {
Get.toNamed( Get.toNamed(
'/videoV', '/videoV',
arguments: arguments, arguments: arguments,
id: id, id: id,
preventDuplicates: preventDuplicates, preventDuplicates: false,
); );
} }
} }