mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-26 12:07:11 +08:00
opt view fav
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -218,13 +218,15 @@ TextSpan? richNode(
|
||||
recognizer: TapGestureRecognizer()
|
||||
..onTap = () async {
|
||||
try {
|
||||
int cid = await SearchHttp.ab2c(bvid: i.rid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=${i.rid}&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(i.rid),
|
||||
},
|
||||
);
|
||||
int? cid = await SearchHttp.ab2c(bvid: i.rid);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=${i.rid}&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(i.rid),
|
||||
},
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
SmartDialog.showToast(err.toString());
|
||||
}
|
||||
|
||||
@@ -546,7 +546,7 @@ class _EpisodePanelState extends CommonSlidePageState<EpisodePanel> {
|
||||
? Icons.notifications_off_outlined
|
||||
: Icons.notifications_active_outlined,
|
||||
onPressed: () async {
|
||||
dynamic result = await VideoHttp.seasonFav(
|
||||
var result = await VideoHttp.seasonFav(
|
||||
isFav: response,
|
||||
seasonId: widget.seasonId,
|
||||
);
|
||||
|
||||
@@ -4,15 +4,11 @@ import 'package:PiliPlus/common/widgets/button/icon_button.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/stat/stat.dart';
|
||||
import 'package:PiliPlus/http/search.dart';
|
||||
import 'package:PiliPlus/http/video.dart';
|
||||
import 'package:PiliPlus/models/common/badge_type.dart';
|
||||
import 'package:PiliPlus/models/user/fav_detail.dart';
|
||||
import 'package:PiliPlus/utils/id_utils.dart';
|
||||
import 'package:PiliPlus/utils/page_utils.dart';
|
||||
import 'package:PiliPlus/utils/utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||
import 'package:get/get.dart';
|
||||
|
||||
// 收藏视频卡片 - 水平布局
|
||||
@@ -36,8 +32,6 @@ class FavVideoCardH extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
int id = videoItem.id!;
|
||||
String bvid = videoItem.bvid ?? IdUtils.av2bv(id);
|
||||
return InkWell(
|
||||
onTap: isSort == true
|
||||
? null
|
||||
@@ -46,26 +40,21 @@ class FavVideoCardH extends StatelessWidget {
|
||||
onTap!();
|
||||
return;
|
||||
}
|
||||
String? epId;
|
||||
if (videoItem.type == 24) {
|
||||
videoItem.cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
dynamic seasonId = videoItem.ogv!.seasonId;
|
||||
epId = videoItem.epId;
|
||||
PageUtils.viewBangumi(seasonId: seasonId, epId: epId);
|
||||
return;
|
||||
} else if (videoItem.page == 0 || videoItem.page! > 1) {
|
||||
var result = await VideoHttp.videoIntro(bvid: bvid);
|
||||
if (result['status']) {
|
||||
epId = result['data'].epId;
|
||||
} else {
|
||||
SmartDialog.showToast(result['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
if (!const [0, 16].contains(videoItem.attr)) {
|
||||
Get.toNamed('/member?mid=${videoItem.owner.mid}');
|
||||
return;
|
||||
}
|
||||
|
||||
// pgc
|
||||
if (videoItem.type == 24) {
|
||||
PageUtils.viewBangumi(
|
||||
seasonId: videoItem.ogv!.seasonId,
|
||||
epId: videoItem.epId,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
onViewFav?.call();
|
||||
},
|
||||
onLongPress: isSort == true
|
||||
|
||||
@@ -76,15 +76,17 @@ class HistoryItem extends StatelessWidget {
|
||||
if (epid != null) {
|
||||
PageUtils.viewBangumi(epId: epid);
|
||||
} else {
|
||||
int cid = videoItem.history.cid ??
|
||||
int? cid = videoItem.history.cid ??
|
||||
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(cid),
|
||||
'pic': videoItem.cover,
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(cid),
|
||||
'pic': videoItem.cover,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
SmartDialog.showToast(result['msg']);
|
||||
@@ -95,15 +97,17 @@ class HistoryItem extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int cid = videoItem.history.cid ??
|
||||
int? cid = videoItem.history.cid ??
|
||||
await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(aid),
|
||||
'pic': videoItem.cover,
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(aid),
|
||||
'pic': videoItem.cover,
|
||||
},
|
||||
);
|
||||
}
|
||||
}
|
||||
},
|
||||
onLongPress: () {
|
||||
|
||||
@@ -30,7 +30,7 @@ class HistorySearchController
|
||||
loadingState
|
||||
..value.data!.removeAt(index)
|
||||
..refresh();
|
||||
SmartDialog.showToast(res['msg']);
|
||||
}
|
||||
SmartDialog.showToast(res['msg']);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -346,15 +346,8 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
||||
: Row(
|
||||
children: [
|
||||
GestureDetector(
|
||||
onTap: () {
|
||||
dynamic uid = roomInfoH5.roomInfo?.uid;
|
||||
Get.toNamed(
|
||||
'/member?mid=$uid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(uid),
|
||||
},
|
||||
);
|
||||
},
|
||||
onTap: () => Get.toNamed(
|
||||
'/member?mid=${roomInfoH5.roomInfo?.uid}'),
|
||||
child: NetworkImgLayer(
|
||||
width: 34,
|
||||
height: 34,
|
||||
|
||||
@@ -34,15 +34,17 @@ class MemberCoinsItem extends StatelessWidget {
|
||||
}
|
||||
}
|
||||
}
|
||||
int cid =
|
||||
int? cid =
|
||||
await SearchHttp.ab2c(aid: coinItem.aid, bvid: coinItem.bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=${coinItem.bvid}&cid=$cid',
|
||||
arguments: {
|
||||
'videoItem': coinItem,
|
||||
'heroTag': Utils.makeHeroTag(coinItem.aid)
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=${coinItem.bvid}&cid=$cid',
|
||||
arguments: {
|
||||
'videoItem': coinItem,
|
||||
'heroTag': Utils.makeHeroTag(coinItem.aid)
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
onLongPress: () => imageSaveDialog(
|
||||
title: coinItem.title,
|
||||
|
||||
@@ -147,35 +147,37 @@ class MemberVideoCtr
|
||||
if (list.isNullOrEmpty) return;
|
||||
|
||||
if (episodicButton.value.text == '继续播放') {
|
||||
dynamic oid = RegExp(r'oid=([\d]+)')
|
||||
String? oid = RegExp(r'oid=(\d+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1);
|
||||
dynamic bvid = IdUtils.av2bv(int.tryParse(oid) ?? 0);
|
||||
dynamic cid = await SearchHttp.ab2c(aid: oid, bvid: bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(oid),
|
||||
'sourceType': 'archive',
|
||||
'mediaId': seasonId ?? seriesId ?? mid,
|
||||
'oid': oid,
|
||||
'favTitle':
|
||||
'$username: ${title ?? episodicButton.value.text ?? '播放全部'}',
|
||||
if (seriesId == null) 'count': count.value,
|
||||
if (seasonId != null || seriesId != null)
|
||||
'mediaType': RegExp(r'page_type=([\d]+)')
|
||||
if (oid != null) {
|
||||
var bvid = IdUtils.av2bv(int.parse(oid));
|
||||
var cid = await SearchHttp.ab2c(aid: oid, bvid: bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'heroTag': Utils.makeHeroTag(oid),
|
||||
'sourceType': 'archive',
|
||||
'mediaId': seasonId ?? seriesId ?? mid,
|
||||
'oid': oid,
|
||||
'favTitle':
|
||||
'$username: ${title ?? episodicButton.value.text ?? '播放全部'}',
|
||||
if (seriesId == null) 'count': count.value,
|
||||
if (seasonId != null || seriesId != null)
|
||||
'mediaType': RegExp(r'page_type=([\d]+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1),
|
||||
'desc': RegExp(r'desc=([\d]+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1) ==
|
||||
'1',
|
||||
'sortField': RegExp(r'sort_field=([\d]+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1),
|
||||
'desc': RegExp(r'desc=([\d]+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1) ==
|
||||
'1',
|
||||
'sortField': RegExp(r'sort_field=([\d]+)')
|
||||
.firstMatch('${episodicButton.value.uri}')
|
||||
?.group(1),
|
||||
'isContinuePlaying': true,
|
||||
},
|
||||
);
|
||||
'isContinuePlaying': true,
|
||||
},
|
||||
);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,15 +28,17 @@ class SubVideoCardH extends StatelessWidget {
|
||||
String bvid = videoItem.bvid!;
|
||||
return InkWell(
|
||||
onTap: () async {
|
||||
int cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'videoItem': videoItem,
|
||||
'heroTag': Utils.makeHeroTag(id),
|
||||
'videoType': SearchType.video,
|
||||
},
|
||||
);
|
||||
int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'videoItem': videoItem,
|
||||
'heroTag': Utils.makeHeroTag(id),
|
||||
'videoType': SearchType.video,
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
onLongPress: () => imageSaveDialog(
|
||||
title: videoItem.title,
|
||||
|
||||
@@ -164,9 +164,11 @@ class _MediaListPanelState
|
||||
String bvid = item.bvid!;
|
||||
int? aid = item.aid;
|
||||
String cover = item.cover ?? '';
|
||||
final int cid =
|
||||
final int? cid =
|
||||
item.cid ?? await SearchHttp.ab2c(aid: aid, bvid: bvid);
|
||||
widget.changeMediaList?.call(bvid, cid, aid, cover);
|
||||
if (cid != null) {
|
||||
widget.changeMediaList?.call(bvid, cid, aid, cover);
|
||||
}
|
||||
},
|
||||
onLongPress: () => imageSaveDialog(
|
||||
title: item.title,
|
||||
|
||||
@@ -2160,7 +2160,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
..cid.refresh();
|
||||
} else {
|
||||
// switch to first episode
|
||||
dynamic episode = videoIntroController.videoDetail.value.ugcSeason!
|
||||
var episode = videoIntroController.videoDetail.value.ugcSeason!
|
||||
.sections![videoDetailController.seasonIndex.value].episodes!.first;
|
||||
if (episode.cid != videoDetailController.cid.value) {
|
||||
changeEpisode(episode);
|
||||
@@ -2182,7 +2182,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
||||
videoDetailController.cid.refresh();
|
||||
} else {
|
||||
// switch to first episode
|
||||
dynamic episode = videoIntroController.videoDetail.value.pages!.first;
|
||||
var episode = videoIntroController.videoDetail.value.pages!.first;
|
||||
if (episode.cid != videoDetailController.cid.value) {
|
||||
changeEpisode(episode);
|
||||
} else {
|
||||
|
||||
@@ -291,15 +291,17 @@ class ChatItem extends StatelessWidget {
|
||||
String bvid = match.group(0)!;
|
||||
try {
|
||||
SmartDialog.showLoading();
|
||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
SmartDialog.dismiss();
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: <String, String?>{
|
||||
'pic': i['cover_url'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: <String, String?>{
|
||||
'pic': i['cover_url'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast(err.toString());
|
||||
@@ -378,15 +380,17 @@ class ChatItem extends StatelessWidget {
|
||||
try {
|
||||
SmartDialog.showLoading();
|
||||
var bvid = content["bvid"];
|
||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
SmartDialog.dismiss();
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'pic': content['thumb'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: {
|
||||
'pic': content['thumb'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
SmartDialog.dismiss();
|
||||
SmartDialog.showToast(err.toString());
|
||||
@@ -460,15 +464,17 @@ class ChatItem extends StatelessWidget {
|
||||
}
|
||||
bvid ??= IdUtils.av2bv(aid);
|
||||
SmartDialog.showLoading();
|
||||
final int cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
final int? cid = await SearchHttp.ab2c(bvid: bvid);
|
||||
SmartDialog.dismiss();
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: <String, String?>{
|
||||
'pic': content['thumb'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
if (cid != null) {
|
||||
PageUtils.toVideoPage(
|
||||
'bvid=$bvid&cid=$cid',
|
||||
arguments: <String, String?>{
|
||||
'pic': content['thumb'],
|
||||
'heroTag': Utils.makeHeroTag(bvid),
|
||||
},
|
||||
);
|
||||
}
|
||||
};
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user