From 5b8c68303f9d7c6101ab6b349a39732ac5448487 Mon Sep 17 00:00:00 2001 From: bggRGjQaUbCoE Date: Thu, 27 Feb 2025 23:52:54 +0800 Subject: [PATCH] fix: #337 Signed-off-by: bggRGjQaUbCoE --- lib/pages/video/detail/controller.dart | 21 ++++++++++++------- lib/pages/video/detail/introduction/view.dart | 6 +++--- lib/pages/video/detail/view.dart | 8 +++---- lib/pages/video/detail/view_v.dart | 4 ++-- 4 files changed, 23 insertions(+), 16 deletions(-) diff --git a/lib/pages/video/detail/controller.dart b/lib/pages/video/detail/controller.dart index 6eeb2417..5ef92ef8 100644 --- a/lib/pages/video/detail/controller.dart +++ b/lib/pages/video/detail/controller.dart @@ -130,7 +130,7 @@ class VideoDetailController extends GetxController StreamSubscription? positionSubscription; late final scrollKey = GlobalKey(); - late String _direction = 'horizontal'; + late RxString direction = 'horizontal'.obs; late final RxDouble scrollRatio = 0.0.obs; late final ScrollController scrollCtr = ScrollController() ..addListener(scrollListener); @@ -140,8 +140,9 @@ class VideoDetailController extends GetxController vsync: this, duration: const Duration(milliseconds: 200), ); - late final double minVideoHeight = Get.width * 9 / 16; - late final double maxVideoHeight = max(Get.height * 0.65, Get.width); + late final double minVideoHeight = min(Get.height, Get.width) * 9 / 16; + late final double maxVideoHeight = + max(max(Get.height, Get.width) * 0.65, min(Get.height, Get.width)); late double videoHeight = minVideoHeight; void setVideoHeight() { @@ -150,11 +151,17 @@ class VideoDetailController extends GetxController ? 'horizontal' : 'vertical' : 'horizontal'; - if (GStorage.collapsibleVideoPage.not || scrollCtr.hasClients.not) { + if (GStorage.collapsibleVideoPage.not) { + this.direction.value = direction; return; } - if (_direction != direction) { - _direction = direction; + if (scrollCtr.hasClients.not) { + videoHeight = direction == 'vertical' ? maxVideoHeight : minVideoHeight; + this.direction.value = direction; + return; + } + if (this.direction.value != direction) { + this.direction.value = direction; double videoHeight = direction == 'vertical' ? maxVideoHeight : minVideoHeight; if (this.videoHeight != videoHeight) { @@ -1077,7 +1084,7 @@ class VideoDetailController extends GetxController ? null : Duration(milliseconds: data.timeLength!), // 宽>高 水平 否则 垂直 - direction: _direction, + direction: direction.value, bvid: bvid, cid: cid.value, enableHeart: enableHeart, diff --git a/lib/pages/video/detail/introduction/view.dart b/lib/pages/video/detail/introduction/view.dart index 9ed473dc..959936ce 100644 --- a/lib/pages/video/detail/introduction/view.dart +++ b/lib/pages/video/detail/introduction/view.dart @@ -305,9 +305,9 @@ class _VideoInfoState extends State with TickerProviderStateMixin { final ThemeData t = Theme.of(context); return SliverLayoutBuilder( builder: (BuildContext context, SliverConstraints constraints) { - // bool isHorizontal = constraints.crossAxisExtent > - // constraints.viewportMainAxisExtent * 1.25; - bool isHorizontal = context.orientation == Orientation.landscape; + bool isHorizontal = context.orientation == Orientation.landscape && + constraints.crossAxisExtent > + constraints.viewportMainAxisExtent * 1.25; return SliverPadding( padding: const EdgeInsets.only( left: StyleString.safeSpace, diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index 4ebee0b3..db77a8a8 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -193,7 +193,7 @@ class _VideoDetailPageState extends State // begin: MediaQuery.of(context).orientation == Orientation.landscape // ? context.height // : ((enableVerticalExpand && - // plPlayerController?.direction.value == 'vertical') + // videoDetailController.direction.value == 'vertical') // ? context.width * 5 / 4 // : context.width * 9 / 16), // end: 0, @@ -568,7 +568,7 @@ class _VideoDetailPageState extends State final double videoWidth = context.width; // debugPrint(videoDetailController.tabCtr.index); if (enableVerticalExpand && - plPlayerController?.direction.value == 'vertical') { + videoDetailController.direction.value == 'vertical') { videoHeight = context.width; } if (MediaQuery.of(context).orientation == @@ -648,7 +648,7 @@ class _VideoDetailPageState extends State Widget get childWhenDisabledAlmostSquareInner => Obx( () { if (enableVerticalExpand && - plPlayerController?.direction.value == 'vertical') { + videoDetailController.direction.value == 'vertical') { final double videoHeight = context.height - (removeSafeArea ? 0 @@ -743,7 +743,7 @@ class _VideoDetailPageState extends State Widget get childWhenDisabledLandscapeInner => Obx( () { if (enableVerticalExpand && - plPlayerController?.direction.value == 'vertical') { + videoDetailController.direction.value == 'vertical') { final double videoHeight = context.height - (removeSafeArea ? 0 : MediaQuery.of(context).padding.top); final double videoWidth = videoHeight * 9 / 16; diff --git a/lib/pages/video/detail/view_v.dart b/lib/pages/video/detail/view_v.dart index f2abb3e9..4b71661a 100644 --- a/lib/pages/video/detail/view_v.dart +++ b/lib/pages/video/detail/view_v.dart @@ -934,7 +934,7 @@ class _VideoDetailPageVState extends State Widget get childWhenDisabledAlmostSquareInner => Obx( () { if (enableVerticalExpand && - plPlayerController?.direction.value == 'vertical') { + videoDetailController.direction.value == 'vertical') { final double videoHeight = context.height - (removeSafeArea ? 0 @@ -1029,7 +1029,7 @@ class _VideoDetailPageVState extends State Widget get childWhenDisabledLandscapeInner => Obx( () { if (enableVerticalExpand && - plPlayerController?.direction.value == 'vertical') { + videoDetailController.direction.value == 'vertical') { final double videoHeight = context.height - (removeSafeArea ? 0 : MediaQuery.of(context).padding.top); final double videoWidth = videoHeight * 9 / 16;