From db79a03ec485718845ce41481c3fb13825728ae2 Mon Sep 17 00:00:00 2001 From: Tong xuewen <1135746060@qq.com> Date: Mon, 28 Jul 2025 16:53:17 +0800 Subject: [PATCH] fix ios fullscreen when resuming from background (#902) --- lib/pages/video/view.dart | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/pages/video/view.dart b/lib/pages/video/view.dart index 4a9e07270..9b0315a33 100644 --- a/lib/pages/video/view.dart +++ b/lib/pages/video/view.dart @@ -37,6 +37,7 @@ import 'package:PiliPlus/pages/video/reply_reply/view.dart'; import 'package:PiliPlus/pages/video/view_point/view.dart'; import 'package:PiliPlus/pages/video/widgets/header_control.dart'; import 'package:PiliPlus/plugin/pl_player/controller.dart'; +import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart'; import 'package:PiliPlus/plugin/pl_player/models/play_status.dart'; import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart'; @@ -181,6 +182,25 @@ class _VideoDetailPageVState extends State if (state == AppLifecycleState.resumed) { videoIntroController.startTimer(); videoDetailController.plPlayerController.showDanmaku = true; + + // 修复从后台恢复时全屏状态下屏幕方向错误的问题 + if (plPlayerController?.isFullScreen.value == true) { + // 延迟一点执行,确保应用完全恢复 + Future.delayed(const Duration(milliseconds: 100), () async { + // 根据视频方向重新设置屏幕方向 + final isVertical = plPlayerController?.isVertical ?? false; + final mode = plPlayerController?.mode; + + if (mode == FullScreenMode.vertical || + (mode == FullScreenMode.auto && isVertical) || + (mode == FullScreenMode.ratio && + (Get.height / Get.width < 1.25 || isVertical))) { + await verticalScreenForTwoSeconds(); + } else { + await landScape(); + } + }); + } } else if (state == AppLifecycleState.paused) { videoIntroController.canelTimer(); videoDetailController.plPlayerController.showDanmaku = false;