diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index c2c49606..3fc3b242 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -134,6 +134,7 @@ class VideoDetailController extends GetxController controller: plPlayerController, videoDetailCtr: this, floating: floating, + heroTag: heroTag, ); // CDN优化 enableCDN = setting.get(SettingBoxKey.enableCDN, defaultValue: true); diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index b2ce60c1..90a30b50 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -72,7 +72,9 @@ class _VideoDetailPageState extends State @override void initState() { super.initState(); - heroTag = Get.arguments['heroTag']; + if (Get.arguments != null && Get.arguments['heroTag'] != null) { + heroTag = Get.arguments['heroTag']; + } videoDetailController = Get.put(VideoDetailController(), tag: heroTag); videoIntroController = Get.put(VideoIntroController(), tag: heroTag); videoIntroController.videoDetail.listen((value) { @@ -247,6 +249,9 @@ class _VideoDetailPageState extends State void dispose() { videoDetailController.floating?.dispose(); floating.dispose(); + videoIntroController.videoDetail.close(); + bangumiIntroController.bangumiDetail.close(); + videoDetailController.cid.close(); if (!horizontalScreen) { AutoOrientation.portraitUpMode(); } @@ -1124,6 +1129,7 @@ class _VideoDetailPageState extends State headerControl: HeaderControl( controller: plPlayerController, videoDetailCtr: videoDetailController, + heroTag: heroTag, ), danmuWidget: pipNoDanmaku ? null diff --git a/lib/pages/video/detail/widgets/header_control.dart b/lib/pages/video/detail/widgets/header_control.dart index 1c75f627..2f14564c 100644 --- a/lib/pages/video/detail/widgets/header_control.dart +++ b/lib/pages/video/detail/widgets/header_control.dart @@ -28,11 +28,13 @@ class HeaderControl extends StatefulWidget implements PreferredSizeWidget { this.controller, this.videoDetailCtr, this.floating, + required this.heroTag, super.key, }); final PlPlayerController? controller; final VideoDetailController? videoDetailCtr; final Floating? floating; + final String heroTag; @override State createState() => _HeaderControlState(); @@ -64,9 +66,10 @@ class _HeaderControlState extends State { super.initState(); videoInfo = widget.videoDetailCtr!.data; listenFullScreenStatus(); - if (Get.arguments != null) { - heroTag = Get.arguments['heroTag']; - } + heroTag = widget.heroTag; + // if (Get.arguments != null && Get.arguments['heroTag'] != null) { + // heroTag = Get.arguments['heroTag']; + // } videoIntroController = Get.put(VideoIntroController(), tag: heroTag); horizontalScreen = setting.get(SettingBoxKey.horizontalScreen, defaultValue: false);