fix: 修复全屏异常,移除Obx中的全屏与退出相关逻辑,统一至监听器中

This commit is contained in:
orz12
2024-02-23 17:27:04 +08:00
parent 69d88fbeb1
commit ba5d99008a
2 changed files with 31 additions and 29 deletions

View File

@@ -96,6 +96,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
appbarStreamListen();
lifecycleListener();
fullScreenStatusListener();
autoScreen();
}
// 获取视频资源,初始化播放器
@@ -188,10 +189,19 @@ class _VideoDetailPageState extends State<VideoDetailPage>
plPlayerController?.isFullScreen.listen((bool isFullScreen) {
if (isFullScreen) {
videoDetailController.hiddenReplyReplyPanel();
enterFullScreen();
}
setState(() {
this.isFullScreen.value = isFullScreen;
});
if (!isFullScreen) {
exitFullScreen();
if (setting.get(SettingBoxKey.horizontalScreen, defaultValue: false)) {
autoScreen();
} else {
verticalScreen();
}
}
});
}
@@ -290,7 +300,6 @@ class _VideoDetailPageState extends State<VideoDetailPage>
}
}
@override
Widget build(BuildContext context) {
Widget childWhenDisabled = SafeArea(
@@ -317,13 +326,6 @@ class _VideoDetailPageState extends State<VideoDetailPage>
children: [
Obx(
() {
if (MediaQuery.of(context).orientation ==
Orientation.landscape ||
isFullScreen.value == true) {
enterFullScreen();
} else {
exitFullScreen();
}
final double videoheight = Get.width * 9 / 16;
final double videowidth = Get.width;
return SizedBox(
@@ -547,7 +549,7 @@ class _VideoDetailPageState extends State<VideoDetailPage>
},
),
Obx(
() => VideoReplyPanel(
() => VideoReplyPanel(
bvid: videoDetailController.bvid,
oid: videoDetailController.oid.value,
),
@@ -826,34 +828,39 @@ class _VideoDetailPageState extends State<VideoDetailPage>
}
},
);
if (!horizontalScreen) {
if (Platform.isAndroid) {
return PiPSwitcher(
childWhenEnabled: childWhenEnabled,
childWhenDisabled: childWhenDisabled,
floating: floating,);
}
return childWhenDisabled;
}
// if (!horizontalScreen) {
// if (Platform.isAndroid) {
// return PiPSwitcher(
// childWhenEnabled: childWhenEnabled,
// childWhenDisabled: childWhenDisabled,
// floating: floating,);
// }
// return childWhenDisabled;
// }
return OrientationBuilder(
builder: (BuildContext context, Orientation orientation) {
print("orientation $orientation");
if (orientation == Orientation.landscape) {
enterFullScreen();
if (!horizontalScreen) {
videoDetailController.hiddenReplyReplyPanel();
}
} else if (!isFullScreen.value) {
StatusBarControl.setHidden(false, animation: StatusBarAnimation.FADE);
}
if (Platform.isAndroid) {
return PiPSwitcher(
childWhenDisabled: orientation == Orientation.portrait
? childWhenDisabled
: childWhenDisabledLandscape,
childWhenDisabled:
!horizontalScreen || orientation == Orientation.portrait
? childWhenDisabled
: childWhenDisabledLandscape,
childWhenEnabled: childWhenEnabled,
floating: floating,
);
}
return orientation == Orientation.portrait
? childWhenDisabled
: childWhenDisabledLandscape;
return !horizontalScreen || orientation == Orientation.portrait
? childWhenDisabled
: childWhenDisabledLandscape;
});
}
}

View File

@@ -75,11 +75,6 @@ Future<void> exitFullScreen() async {
mode,
overlays: SystemUiOverlay.values,
);
if (setting.get(SettingBoxKey.horizontalScreen, defaultValue: false)) {
autoScreen();
} else {
verticalScreen();
}
} else if (Platform.isMacOS || Platform.isWindows || Platform.isLinux) {
await const MethodChannel('com.alexmercerind/media_kit_video')
.invokeMethod(