Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-01-03 21:47:25 +08:00
parent 321b7933d7
commit 0be609db3d
23 changed files with 188 additions and 165 deletions

View File

@@ -41,7 +41,6 @@ class VideoCardH extends StatelessWidget {
try {
type = videoItem.type;
} catch (_) {}
final String heroTag = Utils.makeHeroTag(aid);
return Stack(children: [
Semantics(
label: Utils.videoItemSemantics(videoItem),
@@ -81,8 +80,13 @@ class VideoCardH extends StatelessWidget {
try {
final int cid =
videoItem.cid ?? await SearchHttp.ab2c(aid: aid, bvid: bvid);
Get.toNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'videoItem': videoItem, 'heroTag': heroTag});
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'videoItem': videoItem,
'heroTag': Utils.makeHeroTag(aid)
},
);
} catch (err) {
SmartDialog.showToast(err.toString());
}
@@ -105,13 +109,10 @@ class VideoCardH extends StatelessWidget {
final double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.pic as String,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.pic as String,
width: maxWidth,
height: maxHeight,
),
if (videoItem.duration != 0)
PBadge(

View File

@@ -59,13 +59,6 @@ class VideoCardHGrpc extends StatelessWidget {
}
try {
PiliScheme.routePush(Uri.parse(videoItem.smallCoverV5.base.uri));
// final int cid =
// videoItem.smallCoverV5.base.playerArgs.cid.toInt() ??
// await SearchHttp.ab2c(aid: aid, bvid: bvid);
// Get.toNamed('/video?bvid=$bvid&cid=$cid',
// arguments: {'heroTag': heroTag});
// Get.toNamed('/video?bvid=$bvid&cid=$cid',
// arguments: {'videoItem': videoItem, 'heroTag': heroTag});
} catch (err) {
SmartDialog.showToast(err.toString());
}

View File

@@ -27,7 +27,6 @@ class VideoCardHMemberVideo extends StatelessWidget {
Widget build(BuildContext context) {
final int aid = int.tryParse(videoItem.param ?? '') ?? -1;
final String bvid = videoItem.bvid ?? '';
final String heroTag = Utils.makeHeroTag(aid);
return Stack(
children: [
InkWell(
@@ -42,8 +41,12 @@ class VideoCardHMemberVideo extends StatelessWidget {
return;
}
try {
Get.toNamed('/video?bvid=$bvid&cid=${videoItem.firstCid}',
arguments: {'heroTag': heroTag});
Get.toNamed(
'/video?bvid=$bvid&cid=${videoItem.firstCid}',
arguments: {
'heroTag': Utils.makeHeroTag(aid),
},
);
} catch (err) {
SmartDialog.showToast(err.toString());
}
@@ -68,14 +71,11 @@ class VideoCardHMemberVideo extends StatelessWidget {
final double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.cover,
// videoItem.season?['cover'] ?? videoItem.cover,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.cover,
// videoItem.season?['cover'] ?? videoItem.cover,
width: maxWidth,
height: maxHeight,
),
// if (videoItem.season != null)
// PBadge(

View File

@@ -81,11 +81,14 @@ class VideoCardV extends StatelessWidget {
if (cid == -1) {
cid = await SearchHttp.ab2c(aid: videoItem.aid, bvid: bvid);
}
Get.toNamed('/video?bvid=$bvid&cid=$cid', arguments: {
// 'videoItem': videoItem,
'pic': videoItem.pic,
'heroTag': heroTag,
});
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
// 'videoItem': videoItem,
'pic': videoItem.pic,
'heroTag': heroTag,
},
);
break;
// 动态
case 'picture':
@@ -145,7 +148,6 @@ class VideoCardV extends StatelessWidget {
@override
Widget build(BuildContext context) {
String heroTag = Utils.makeHeroTag(videoItem.id);
return Stack(children: [
Semantics(
label: Utils.videoItemSemantics(videoItem),
@@ -158,7 +160,7 @@ class VideoCardV extends StatelessWidget {
clipBehavior: Clip.hardEdge,
margin: EdgeInsets.zero,
child: InkWell(
onTap: () async => onPushDetail(heroTag),
onTap: () => onPushDetail(Utils.makeHeroTag(videoItem.id)),
onLongPress: () => imageSaveDialog(
context: context,
title: videoItem.title,
@@ -173,13 +175,10 @@ class VideoCardV extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.pic,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.pic,
width: maxWidth,
height: maxHeight,
),
if (videoItem.duration > 0)
PBadge(

View File

@@ -64,11 +64,14 @@ class VideoCardVMemberHome extends StatelessWidget {
// break;
case 'av':
String bvid = videoItem.bvid ?? '';
Get.toNamed('/video?bvid=$bvid&cid=${videoItem.firstCid}', arguments: {
// 'videoItem': videoItem,
'pic': videoItem.cover,
'heroTag': heroTag,
});
Get.toNamed(
'/video?bvid=$bvid&cid=${videoItem.firstCid}',
arguments: {
// 'videoItem': videoItem,
'pic': videoItem.cover,
'heroTag': heroTag,
},
);
break;
// 动态
// case 'picture':
@@ -128,7 +131,6 @@ class VideoCardVMemberHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
String heroTag = Utils.makeHeroTag(videoItem.bvid);
// List<VideoCustomAction> actions =
// VideoCustomActions(videoItem, context).actions;
return Stack(children: [
@@ -143,7 +145,7 @@ class VideoCardVMemberHome extends StatelessWidget {
clipBehavior: Clip.hardEdge,
margin: EdgeInsets.zero,
child: InkWell(
onTap: () async => onPushDetail(heroTag),
onTap: () => onPushDetail(Utils.makeHeroTag(videoItem.bvid)),
onLongPress: () => imageSaveDialog(
context: context,
title: videoItem.title,
@@ -158,13 +160,10 @@ class VideoCardVMemberHome extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.cover,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.cover,
width: maxWidth,
height: maxHeight,
),
if ((videoItem.duration ?? -1) > 0)
PBadge(

View File

@@ -89,8 +89,13 @@ class DynamicsController extends GetxController
String cover = item.modules.moduleDynamic.major.archive.cover;
try {
int cid = await SearchHttp.ab2c(bvid: bvid);
Utils.toDupNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'pic': cover, 'heroTag': bvid});
Utils.toDupNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'pic': cover,
'heroTag': Utils.makeHeroTag(bvid),
},
);
} catch (err) {
SmartDialog.showToast(err.toString());
}
@@ -162,8 +167,13 @@ class DynamicsController extends GetxController
String bvid = IdUtils.av2bv(aid);
String cover = ugcSeason.cover!;
int cid = await SearchHttp.ab2c(bvid: bvid);
Utils.toDupNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'pic': cover, 'heroTag': bvid});
Utils.toDupNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'pic': cover,
'heroTag': Utils.makeHeroTag(bvid),
},
);
break;
/// 番剧查看

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -34,8 +35,13 @@ Widget addWidget(item, context, type, {floor = 1}) {
String cover = dynamicProperty[type].cover;
try {
int cid = await SearchHttp.ab2c(bvid: bvid);
Get.toNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'pic': cover, 'heroTag': bvid});
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'pic': cover,
'heroTag': Utils.makeHeroTag(bvid),
},
);
} catch (err) {
SmartDialog.showToast(err.toString());
}

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/models/dynamics/result.dart';
import 'package:PiliPalaX/utils/utils.dart';
import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart';
@@ -237,8 +238,13 @@ InlineSpan? richNode(item, context) {
onTap: () async {
try {
int cid = await SearchHttp.ab2c(bvid: i.rid);
Get.toNamed('/video?bvid=${i.rid}&cid=$cid',
arguments: {'pic': null, 'heroTag': i.rid});
Get.toNamed(
'/video?bvid=${i.rid}&cid=$cid',
arguments: {
'pic': null,
'heroTag': Utils.makeHeroTag(i.rid),
},
);
} catch (err) {
SmartDialog.showToast(err.toString());
}

View File

@@ -136,12 +136,11 @@ class FavDetailController extends MultiSelectController {
if (element.bvid != list.first.bvid) {
SmartDialog.showToast('已跳过不支持播放的视频');
}
final String heroTag = Utils.makeHeroTag(element.bvid);
Get.toNamed(
'/video?bvid=${element.bvid}&cid=${element.cid}',
arguments: {
'videoItem': element,
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(element.bvid),
'sourceType': 'fav',
'mediaId': item.value.id,
'oid': element.id,

View File

@@ -37,7 +37,6 @@ class FavVideoCardH extends StatelessWidget {
Widget build(BuildContext context) {
int id = videoItem.id;
String bvid = videoItem.bvid ?? IdUtils.av2bv(id);
String heroTag = Utils.makeHeroTag(id);
return InkWell(
onTap: () async {
if (onTap != null) {
@@ -68,12 +67,16 @@ class FavVideoCardH extends StatelessWidget {
// if (seasonId != null) {
// parameters['seasonId'] = seasonId.toString();
// }
Get.toNamed('/video', parameters: parameters, arguments: {
'videoItem': videoItem,
'heroTag': heroTag,
'videoType':
epId != null ? SearchType.media_bangumi : SearchType.video,
});
Get.toNamed(
'/video',
parameters: parameters,
arguments: {
'videoItem': videoItem,
'heroTag': Utils.makeHeroTag(id),
'videoType':
epId != null ? SearchType.media_bangumi : SearchType.video,
},
);
},
onLongPress: () {
if (onLongPress != null) {
@@ -109,13 +112,10 @@ class FavVideoCardH extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.pic,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.pic,
width: maxWidth,
height: maxHeight,
),
PBadge(
text: Utils.timeFormat(videoItem.duration!),

View File

@@ -32,7 +32,6 @@ class HistoryItem extends StatelessWidget {
Widget build(BuildContext context) {
int aid = videoItem.history.oid;
String bvid = videoItem.history.bvid ?? IdUtils.av2bv(aid);
String heroTag = Utils.makeHeroTag(aid);
return InkWell(
onTap: () async {
if (ctr is MultiSelectController && ctr!.enableMultiSelect.value) {
@@ -79,26 +78,19 @@ class HistoryItem extends StatelessWidget {
var result = await VideoHttp.videoIntro(bvid: bvid);
if (result['status']) {
String bvid = result['data'].bvid!;
int cid = result['data'].cid!;
// String pic = result['data'].pic!;
String heroTag = Utils.makeHeroTag(cid);
var epid = result['data'].epId;
if (epid != null) {
Utils.viewBangumi(epId: epid);
// Get.toNamed(
// '/video?bvid=$bvid&cid=$cid&seasonId=${result['data'].seasonId}&epId=${result['data'].epId}',
// arguments: {
// 'pic': pic,
// 'heroTag': heroTag,
// 'videoType': SearchType.media_bangumi,
// },
// );
} else {
int cid = videoItem.history.cid ??
// videoItem.history.oid ??
await SearchHttp.ab2c(aid: aid, bvid: bvid);
Get.toNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'heroTag': heroTag, 'pic': videoItem.cover});
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'heroTag': Utils.makeHeroTag(cid),
'pic': videoItem.cover,
},
);
}
} else {
SmartDialog.showToast(result['msg']);
@@ -147,8 +139,13 @@ class HistoryItem extends StatelessWidget {
int cid = videoItem.history.cid ??
// videoItem.history.oid ??
await SearchHttp.ab2c(aid: aid, bvid: bvid);
Get.toNamed('/video?bvid=$bvid&cid=$cid',
arguments: {'heroTag': heroTag, 'pic': videoItem.cover});
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'heroTag': Utils.makeHeroTag(aid),
'pic': videoItem.cover,
},
);
}
},
onLongPress: () {
@@ -191,16 +188,13 @@ class HistoryItem extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
radius: 12,
src: (videoItem.cover != ''
? videoItem.cover
: videoItem.covers.first),
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
radius: 12,
src: (videoItem.cover != ''
? videoItem.cover
: videoItem.covers.first),
width: maxWidth,
height: maxHeight,
),
if (!BusinessType
.hiddenDurationType.hiddenDurationType

View File

@@ -177,12 +177,11 @@ class LaterController extends MultiSelectController {
if (item.bvid != list.first.bvid) {
SmartDialog.showToast('已跳过不支持播放的视频');
}
final String heroTag = Utils.makeHeroTag(item.bvid);
Get.toNamed(
'/video?bvid=${item.bvid}&cid=${item.cid}',
arguments: {
'videoItem': item,
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(item.bvid),
'sourceType': 'watchLater',
'count': list.length,
'favTitle': '稍后再看',

View File

@@ -18,7 +18,6 @@ class MemberCoinsItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
String heroTag = Utils.makeHeroTag(coinItem.aid);
return Card(
elevation: 0,
clipBehavior: Clip.hardEdge,
@@ -27,8 +26,13 @@ class MemberCoinsItem extends StatelessWidget {
onTap: () async {
int cid =
await SearchHttp.ab2c(aid: coinItem.aid, bvid: coinItem.bvid);
Get.toNamed('/video?bvid=${coinItem.bvid}&cid=$cid',
arguments: {'videoItem': coinItem, 'heroTag': heroTag});
Get.toNamed(
'/video?bvid=${coinItem.bvid}&cid=$cid',
arguments: {
'videoItem': coinItem,
'heroTag': Utils.makeHeroTag(coinItem.aid)
},
);
},
child: Column(
children: [

View File

@@ -258,7 +258,9 @@ class SearchDynamic extends StatelessWidget {
onTap: () {
Get.toNamed(
'/video?bvid=${IdUtils.av2bv(json['aid'])}&cid=${json['cid']}',
arguments: {'heroTag': Utils.makeHeroTag(json['aid'])},
arguments: {
'heroTag': Utils.makeHeroTag(json['aid']),
},
);
},
title: Text(

View File

@@ -17,7 +17,6 @@ class MemberSeasonsItem extends StatelessWidget {
@override
Widget build(BuildContext context) {
String heroTag = Utils.makeHeroTag(seasonItem.aid);
return Card(
elevation: 0,
clipBehavior: Clip.hardEdge,
@@ -26,8 +25,13 @@ class MemberSeasonsItem extends StatelessWidget {
onTap: () async {
int cid =
await SearchHttp.ab2c(aid: seasonItem.aid, bvid: seasonItem.bvid);
Get.toNamed('/video?bvid=${seasonItem.bvid}&cid=$cid',
arguments: {'videoItem': seasonItem, 'heroTag': heroTag});
Get.toNamed(
'/video?bvid=${seasonItem.bvid}&cid=$cid',
arguments: {
'videoItem': seasonItem,
'heroTag': Utils.makeHeroTag(seasonItem.aid)
},
);
},
child: Column(
children: [
@@ -38,13 +42,10 @@ class MemberSeasonsItem extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: seasonItem.pic,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: seasonItem.pic,
width: maxWidth,
height: maxHeight,
),
if (seasonItem.pubdate != null)
PBadge(

View File

@@ -73,7 +73,6 @@ class SearchPanelController extends CommonController {
}
if (matchKeys.isNotEmpty && searchType == SearchType.video ||
aid.toString() == keyword) {
String heroTag = Utils.makeHeroTag(bvid);
int cid = await SearchHttp.ab2c(aid: aid, bvid: bvid);
if (matchKeys.isNotEmpty &&
matchKeys.first == 'BV' &&
@@ -84,7 +83,10 @@ class SearchPanelController extends CommonController {
aid.toString() == keyword) {
Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {'videoItem': resultList.first, 'heroTag': heroTag},
arguments: {
'videoItem': resultList.first,
'heroTag': Utils.makeHeroTag(bvid),
},
);
}
}

View File

@@ -26,7 +26,6 @@ class SubVideoCardH extends StatelessWidget {
Widget build(BuildContext context) {
int id = videoItem.id!;
String bvid = videoItem.bvid!;
String heroTag = Utils.makeHeroTag(id);
return InkWell(
onTap: () async {
int cid = await SearchHttp.ab2c(bvid: bvid);
@@ -35,11 +34,15 @@ class SubVideoCardH extends StatelessWidget {
'cid': cid.toString(),
};
Get.toNamed('/video', parameters: parameters, arguments: {
'videoItem': videoItem,
'heroTag': heroTag,
'videoType': SearchType.video,
});
Get.toNamed(
'/video',
parameters: parameters,
arguments: {
'videoItem': videoItem,
'heroTag': Utils.makeHeroTag(id),
'videoType': SearchType.video,
},
);
},
onLongPress: () => imageSaveDialog(
context: context,
@@ -69,13 +72,10 @@ class SubVideoCardH extends StatelessWidget {
double maxHeight = boxConstraints.maxHeight;
return Stack(
children: [
Hero(
tag: heroTag,
child: NetworkImgLayer(
src: videoItem.cover,
width: maxWidth,
height: maxHeight,
),
NetworkImgLayer(
src: videoItem.cover,
width: maxWidth,
height: maxHeight,
),
PBadge(
text: Utils.timeFormat(videoItem.duration!),

View File

@@ -765,13 +765,23 @@ class VideoIntroController extends GetxController
(relatedCtr.loadingState.value as Success).response[0];
try {
if (videoItem.cid != null) {
Get.offNamed('/video?bvid=${videoItem.bvid}&cid=${videoItem.cid}',
arguments: {'videoItem': videoItem, 'heroTag': heroTag});
Get.offNamed(
'/video?bvid=${videoItem.bvid}&cid=${videoItem.cid}',
arguments: {
'videoItem': videoItem,
'heroTag': heroTag,
},
);
// changeSeasonOrbangu(videoItem.bvid, videoItem.cid, videoItem.aid);
} else {
SearchHttp.ab2c(aid: videoItem.aid, bvid: videoItem.bvid).then((cid) =>
Get.offNamed('/video?bvid=${videoItem.bvid}&cid=${videoItem.cid}',
arguments: {'videoItem': videoItem, 'heroTag': heroTag}));
SearchHttp.ab2c(aid: videoItem.aid, bvid: videoItem.bvid).then(
(cid) => Get.offNamed(
'/video?bvid=${videoItem.bvid}&cid=${videoItem.cid}',
arguments: {
'videoItem': videoItem,
'heroTag': heroTag,
}),
);
}
} catch (err) {
SmartDialog.showToast(err.toString());

View File

@@ -1087,7 +1087,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
Widget get plPlayer => Obx(
() => videoDetailController.videoState.value is! Success
? nil
? const SizedBox.shrink()
: !videoDetailController.autoPlay.value ||
plPlayerController == null ||
plPlayerController!.videoController == null

View File

@@ -164,13 +164,14 @@ class ChatItem extends StatelessWidget {
SmartDialog.showLoading();
var bvid = content["bvid"];
final int cid = await SearchHttp.ab2c(bvid: bvid);
final String heroTag = Utils.makeHeroTag(bvid);
SmartDialog.dismiss<dynamic>().then(
(e) => Get.toNamed<dynamic>('/video?bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': content['thumb'],
'heroTag': heroTag,
}),
(e) => Get.toNamed<dynamic>(
'/video?bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': content['thumb'],
'heroTag': Utils.makeHeroTag(bvid),
},
),
);
},
child: NetworkImgLayer(
@@ -211,13 +212,14 @@ class ChatItem extends StatelessWidget {
SmartDialog.showLoading();
var bvid = content["bvid"];
final int cid = await SearchHttp.ab2c(bvid: bvid);
final String heroTag = Utils.makeHeroTag(bvid);
SmartDialog.dismiss<dynamic>().then(
(e) => Get.toNamed<dynamic>('/video?bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': content['thumb'],
'heroTag': heroTag,
}),
SmartDialog.dismiss().then(
(_) => Get.toNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: {
'pic': content['thumb'],
'heroTag': Utils.makeHeroTag(bvid),
},
),
);
} catch (err) {
SmartDialog.dismiss();
@@ -297,13 +299,12 @@ class ChatItem extends StatelessWidget {
try {
SmartDialog.showLoading();
final int cid = await SearchHttp.ab2c(bvid: bvid);
final String heroTag = Utils.makeHeroTag(bvid);
SmartDialog.dismiss<dynamic>().then(
(e) => Get.toNamed<dynamic>(
'/video?bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': i['cover_url'],
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(bvid),
}),
);
} catch (err) {

View File

@@ -239,12 +239,11 @@ class PiliScheme {
SmartDialog.showLoading<dynamic>(msg: '获取中...');
final int cid = await SearchHttp.ab2c(bvid: bvidVal, aid: aidVal);
SmartDialog.dismiss();
final String heroTag = Utils.makeHeroTag(aid);
Utils.toDupNamed(
'/video?bvid=$bvid&cid=$cid',
arguments: <String, String?>{
'pic': null,
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(aid),
},
);
} catch (e) {

View File

@@ -43,12 +43,11 @@ class UrlUtils {
if (matchRes.containsKey('BV')) {
final String bv = matchRes['BV'];
final int cid = await SearchHttp.ab2c(bvid: bv);
final String heroTag = Utils.makeHeroTag(bv);
await Get.toNamed(
'/video?bvid=$bv&cid=$cid',
arguments: <String, String?>{
'pic': '',
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(bv),
},
preventDuplicates: false,
);

View File

@@ -416,12 +416,11 @@ class Utils {
dynamic bvid = episode?.bvid;
dynamic cid = episode?.cid;
dynamic pic = episode?.cover;
dynamic heroTag = Utils.makeHeroTag(cid);
Utils.toDupNamed(
'/video?bvid=$bvid&cid=$cid&seasonId=${result['data'].seasonId}&epId=${episode?.epId}&type=${result['data'].type}',
arguments: {
'pic': pic,
'heroTag': heroTag,
'heroTag': Utils.makeHeroTag(cid),
'videoType': SearchType.media_bangumi,
'bangumiItem': result['data'],
},