diff --git a/lib/pages/bangumi/introduction/view.dart b/lib/pages/bangumi/introduction/view.dart index a2013282d..fe446e9c2 100644 --- a/lib/pages/bangumi/introduction/view.dart +++ b/lib/pages/bangumi/introduction/view.dart @@ -43,7 +43,6 @@ class _BangumiIntroPanelState extends State late BangumiIntroController bangumiIntroController; late VideoDetailController videoDetailCtr; late int cid; - late String heroTag; // 添加页面缓存 @override @@ -52,11 +51,10 @@ class _BangumiIntroPanelState extends State @override void initState() { super.initState(); - // heroTag = Get.arguments['heroTag']; - heroTag = widget.heroTag; cid = widget.cid!; - bangumiIntroController = Get.put(BangumiIntroController(), tag: heroTag); - videoDetailCtr = Get.find(tag: heroTag); + bangumiIntroController = + Get.put(BangumiIntroController(), tag: widget.heroTag); + videoDetailCtr = Get.find(tag: widget.heroTag); videoDetailCtr.cid.listen((int p0) { cid = p0; if (!mounted) return; @@ -73,6 +71,7 @@ class _BangumiIntroPanelState extends State _buildBody(LoadingState loadingState) { return loadingState is Success ? BangumiInfo( + heroTag: widget.heroTag, loadingStatus: false, bangumiDetail: loadingState.response, cid: cid, @@ -88,6 +87,7 @@ class _BangumiIntroPanelState extends State fn: bangumiIntroController.onReload, ) : BangumiInfo( + heroTag: widget.heroTag, loadingStatus: true, bangumiDetail: null, cid: cid, @@ -105,6 +105,7 @@ class BangumiInfo extends StatefulWidget { this.cid, required this.showEpisodes, required this.showIntroDetail, + required this.heroTag, }); final bool loadingStatus; @@ -112,14 +113,14 @@ class BangumiInfo extends StatefulWidget { final int? cid; final Function showEpisodes; final Function showIntroDetail; + final String heroTag; @override State createState() => _BangumiInfoState(); } class _BangumiInfoState extends State - with SingleTickerProviderStateMixin { - String heroTag = Get.arguments['heroTag']; + with TickerProviderStateMixin { late final BangumiIntroController bangumiIntroController; late final VideoDetailController videoDetailCtr; late final BangumiInfoModel? bangumiItem; @@ -141,8 +142,9 @@ class _BangumiInfoState extends State @override void initState() { super.initState(); - bangumiIntroController = Get.put(BangumiIntroController(), tag: heroTag); - videoDetailCtr = Get.find(tag: heroTag); + bangumiIntroController = + Get.put(BangumiIntroController(), tag: widget.heroTag); + videoDetailCtr = Get.find(tag: widget.heroTag); bangumiItem = bangumiIntroController.bangumiItem; cid = widget.cid!; print('cid: $cid'); @@ -365,6 +367,7 @@ class _BangumiInfoState extends State bangumiItem != null && bangumiItem!.episodes!.isNotEmpty) ...[ BangumiPanel( + heroTag: widget.heroTag, pages: bangumiItem != null ? bangumiItem!.episodes! : widget.bangumiDetail!.episodes!, diff --git a/lib/pages/bangumi/widgets/bangumi_panel.dart b/lib/pages/bangumi/widgets/bangumi_panel.dart index 651386a9a..fa87204af 100644 --- a/lib/pages/bangumi/widgets/bangumi_panel.dart +++ b/lib/pages/bangumi/widgets/bangumi_panel.dart @@ -14,12 +14,14 @@ class BangumiPanel extends StatefulWidget { this.cid, required this.changeFuc, required this.showEpisodes, + required this.heroTag, }); final List pages; final int? cid; final Function changeFuc; final Function showEpisodes; + final String heroTag; @override State createState() => _BangumiPanelState(); @@ -34,7 +36,6 @@ class _BangumiPanelState extends State { // 默认未开通 int vipStatus = 0; late int cid; - String heroTag = Get.arguments['heroTag']; late final VideoDetailController videoDetailCtr; final ItemScrollController itemScrollController = ItemScrollController(); @@ -48,7 +49,7 @@ class _BangumiPanelState extends State { if (userInfo != null) { vipStatus = userInfo.vipStatus; } - videoDetailCtr = Get.find(tag: heroTag); + videoDetailCtr = Get.find(tag: widget.heroTag); videoDetailCtr.cid.listen((int p0) { cid = p0; diff --git a/lib/pages/video/detail/introduction/widgets/action_item.dart b/lib/pages/video/detail/introduction/widgets/action_item.dart index 72ecdba52..535bd1a5e 100644 --- a/lib/pages/video/detail/introduction/widgets/action_item.dart +++ b/lib/pages/video/detail/introduction/widgets/action_item.dart @@ -35,8 +35,7 @@ class ActionItem extends StatefulWidget { State createState() => ActionItemState(); } -class ActionItemState extends State - with SingleTickerProviderStateMixin { +class ActionItemState extends State with TickerProviderStateMixin { AnimationController? controller; Animation? _animation; @@ -58,7 +57,7 @@ class ActionItemState extends State controller?.reverse(); widget.callBack!(false); } - if (duration <= 500 && !isCancel) { + if (duration <= 50 && !isCancel) { feedBack(); widget.onTap!(); } diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index eea8a779b..85d24d3fd 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -1229,7 +1229,6 @@ class _VideoDetailPageState extends State Widget videoIntro([bool needRelated = true]) { return CustomScrollView( controller: _introController, - key: PageStorageKey('简介${videoDetailController.bvid}'), slivers: [ if (videoDetailController.videoType == SearchType.video) ...[ VideoIntroPanel(