mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
fix: 修复全屏异常,移除Obx中的全屏与退出相关逻辑,统一至监听器中
This commit is contained in:
@@ -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;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user