diff --git a/lib/common/widgets/network_img_layer.dart b/lib/common/widgets/network_img_layer.dart index 0a575b63..f5794d9c 100644 --- a/lib/common/widgets/network_img_layer.dart +++ b/lib/common/widgets/network_img_layer.dart @@ -40,7 +40,7 @@ class NetworkImgLayer extends StatelessWidget { Widget build(BuildContext context) { final int defaultImgQuality = GlobalData().imgQuality; final String imageUrl = - '${src!.startsWith('//') ? 'https:${src!}' : src!}@${quality ?? defaultImgQuality}q.webp'; + '${src?.startsWith('//') == true ? 'https:$src' : src}@${quality ?? defaultImgQuality}q.webp'; int? memCacheWidth, memCacheHeight; if (width > height || (origAspectRatio != null && origAspectRatio! > 1)) { @@ -66,7 +66,8 @@ class NetworkImgLayer extends StatelessWidget { child: CachedNetworkImage( imageUrl: imageUrl, width: width, - height: ignoreHeight == null || ignoreHeight == false? height:null, + height: + ignoreHeight == null || ignoreHeight == false ? height : null, memCacheWidth: memCacheWidth, memCacheHeight: memCacheHeight, fit: BoxFit.cover, diff --git a/lib/http/video.dart b/lib/http/video.dart index 7fab7992..d7f72c16 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -245,7 +245,11 @@ class VideoHttp { var res = await Request().get(Api.videoIntro, data: {'bvid': bvid}); VideoDetailResponse result = VideoDetailResponse.fromJson(res.data); if (result.code == 0) { - return {'status': true, 'data': result.data!}; + return { + 'status': true, + 'data': result.data!, + 'pic': result.data?.pic ?? '', + }; } else { // Map errMap = { // -400: '请求错误', diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 5ac70c92..73bfdc09 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -30,7 +30,7 @@ class VideoDetailController extends GetxController RxInt danmakuCid = 0.obs; String heroTag = Get.arguments['heroTag']; // 视频详情 - Map videoItem = {}; + RxMap videoItem = {}.obs; // 视频类型 默认投稿视频 SearchType videoType = Get.arguments['videoType'] ?? SearchType.video; diff --git a/lib/pages/video/detail/introduction/controller.dart b/lib/pages/video/detail/introduction/controller.dart index f08c44f8..ff9affb7 100644 --- a/lib/pages/video/detail/introduction/controller.dart +++ b/lib/pages/video/detail/introduction/controller.dart @@ -114,11 +114,15 @@ class VideoIntroController extends GetxController { queryVideoIntro(); } + late final videoDetailController = + Get.find(tag: heroTag); + // 获取视频简介&分p void queryVideoIntro() async { var result = await VideoHttp.videoIntro(bvid: bvid); if (result['status']) { videoDetail.value = result['data']!; + videoDetailController.videoItem['pic'] = result['pic']!; if (videoDetail.value.pages != null && videoDetail.value.pages!.isNotEmpty && lastPlayCid.value == 0) { diff --git a/lib/pages/video/detail/reply/controller.dart b/lib/pages/video/detail/reply/controller.dart index 43077cf0..a9faf6ae 100644 --- a/lib/pages/video/detail/reply/controller.dart +++ b/lib/pages/video/detail/reply/controller.dart @@ -130,4 +130,10 @@ class VideoReplyController extends GetxController { void animToTop() { scrollController.animToTop(); } + + @override + void onClose() { + scrollController.dispose(); + super.onClose(); + } } diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index d9480dce..b24c7894 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -677,12 +677,14 @@ class _VideoDetailPageState extends State right: 0, child: GestureDetector( onTap: handlePlay, - child: NetworkImgLayer( - type: 'emote', - src: videoDetailController - .videoItem['pic'], - width: videoWidth, - height: videoHeight, + child: Obx( + () => NetworkImgLayer( + type: 'emote', + src: videoDetailController + .videoItem['pic'], + width: videoWidth, + height: videoHeight, + ), ), ), ), @@ -798,11 +800,13 @@ class _VideoDetailPageState extends State right: 0, child: GestureDetector( onTap: handlePlay, - child: NetworkImgLayer( - type: 'emote', - src: videoDetailController.videoItem['pic'], - width: videoWidth, - height: videoHeight, + child: Obx( + () => NetworkImgLayer( + type: 'emote', + src: videoDetailController.videoItem['pic'], + width: videoWidth, + height: videoHeight, + ), ), ), ), @@ -897,11 +901,13 @@ class _VideoDetailPageState extends State right: 0, child: GestureDetector( onTap: handlePlay, - child: NetworkImgLayer( - type: 'emote', - src: videoDetailController.videoItem['pic'], - width: videoWidth, - height: videoHeight, + child: Obx( + () => NetworkImgLayer( + type: 'emote', + src: videoDetailController.videoItem['pic'], + width: videoWidth, + height: videoHeight, + ), ), ), ), @@ -993,11 +999,13 @@ class _VideoDetailPageState extends State right: 0, child: GestureDetector( onTap: handlePlay, - child: NetworkImgLayer( - type: 'emote', - src: videoDetailController.videoItem['pic'], - width: videoWidth, - height: videoHeight, + child: Obx( + () => NetworkImgLayer( + type: 'emote', + src: videoDetailController.videoItem['pic'], + width: videoWidth, + height: videoHeight, + ), ), ), ), @@ -1097,12 +1105,14 @@ class _VideoDetailPageState extends State right: 0, child: GestureDetector( onTap: handlePlay, - child: NetworkImgLayer( - type: 'emote', - src: videoDetailController - .videoItem['pic'], - width: videoWidth, - height: videoHeight, + child: Obx( + () => NetworkImgLayer( + type: 'emote', + src: videoDetailController + .videoItem['pic'], + width: videoWidth, + height: videoHeight, + ), ), ), ),