opt desktop pip

Closes #1478

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-10-28 13:48:16 +08:00
parent 86beb879a2
commit 3b4e251034
6 changed files with 29 additions and 25 deletions

View File

@@ -169,27 +169,28 @@ class BottomControl extends StatelessWidget {
),
),
),
ComBtn(
height: 30,
tooltip: isFullScreen ? '退出全屏' : '全屏',
icon: isFullScreen
? const Icon(
Icons.fullscreen_exit,
size: 24,
color: Colors.white,
)
: const Icon(
Icons.fullscreen,
size: 24,
color: Colors.white,
),
onTap: () =>
plPlayerController.triggerFullScreen(status: !isFullScreen),
onSecondaryTap: () => plPlayerController.triggerFullScreen(
status: !isFullScreen,
inAppFullScreen: true,
if (!plPlayerController.isDesktopPip)
ComBtn(
height: 30,
tooltip: isFullScreen ? '退出全屏' : '全屏',
icon: isFullScreen
? const Icon(
Icons.fullscreen_exit,
size: 24,
color: Colors.white,
)
: const Icon(
Icons.fullscreen,
size: 24,
color: Colors.white,
),
onTap: () =>
plPlayerController.triggerFullScreen(status: !isFullScreen),
onSecondaryTap: () => plPlayerController.triggerFullScreen(
status: !isFullScreen,
inAppFullScreen: true,
),
),
),
],
),
);

View File

@@ -110,7 +110,7 @@ class LiveHeaderControl extends StatelessWidget {
);
},
),
if (Platform.isAndroid || Utils.isDesktop)
if (Platform.isAndroid || (Utils.isDesktop && !isFullScreen))
ComBtn(
tooltip: '画中画',
onTap: () async {

View File

@@ -2450,7 +2450,7 @@ class HeaderControlState extends State<HeaderControl> {
),
),
],
if (Platform.isAndroid || Utils.isDesktop)
if (Platform.isAndroid || (Utils.isDesktop && !isFullScreen))
SizedBox(
width: 42,
height: 34,

View File

@@ -180,7 +180,7 @@ class PlayerFocus extends StatelessWidget {
return true;
case LogicalKeyboardKey.keyP:
if (Utils.isDesktop && hasPlayer) {
if (Utils.isDesktop && hasPlayer && !isFullScreen) {
plPlayerController
..toggleDesktopPip()
..controlsLock.value = false;

View File

@@ -281,6 +281,8 @@ class PlPlayerController {
}
Future<void> enterDesktopPip() async {
if (isFullScreen.value) return;
isDesktopPip = true;
_lastWindowBounds = await windowManager.getBounds();
@@ -1572,6 +1574,7 @@ class PlPlayerController {
bool isManualFS = true,
FullScreenMode? mode,
}) async {
if (isDesktopPip) return;
if (isFullScreen.value == status) return;
if (fsProcessing) {
@@ -1916,4 +1919,4 @@ class PlPlayerController {
}
});
}
}
}

View File

@@ -843,7 +843,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
BottomControlType.subtitle,
BottomControlType.speed,
if (flag) BottomControlType.qa,
BottomControlType.fullscreen,
if (!plPlayerController.isDesktopPip) BottomControlType.fullscreen,
];
return Row(