desktop pip

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-09-20 15:06:44 +08:00
parent 0745d83e4b
commit 36de899a35
8 changed files with 97 additions and 28 deletions

View File

@@ -29,7 +29,6 @@ import 'package:PiliPlus/utils/storage_key.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:canvas_danmaku/canvas_danmaku.dart';
import 'package:floating/floating.dart';
import 'package:flutter/foundation.dart' show kDebugMode;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show SystemUiOverlayStyle;
@@ -181,23 +180,26 @@ class _LiveRoomPageState extends State<LiveRoomPage>
@override
Widget build(BuildContext context) {
if (Platform.isAndroid && Floating().isPipMode) {
return videoPlayerPanel(
Widget child;
if (plPlayerController.isPipMode) {
child = videoPlayerPanel(
isFullScreen,
width: maxWidth,
height: maxHeight,
isPipMode: true,
needDm: !plPlayerController.pipNoDanmaku,
);
} else {
child = childWhenDisabled;
}
if (plPlayerController.keyboardControl) {
return PlayerFocus(
child = PlayerFocus(
plPlayerController: plPlayerController,
onSendDanmaku: _liveRoomController.onSendDanmaku,
child: childWhenDisabled,
child: child,
);
}
return childWhenDisabled;
return child;
}
Widget videoPlayerPanel(

View File

@@ -3,6 +3,7 @@ import 'dart:io';
import 'package:PiliPlus/plugin/pl_player/controller.dart';
import 'package:PiliPlus/plugin/pl_player/widgets/common_btn.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:floating/floating.dart';
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@@ -109,10 +110,14 @@ class LiveHeaderControl extends StatelessWidget {
);
},
),
if (Platform.isAndroid)
if (Platform.isAndroid || Utils.isDesktop)
ComBtn(
tooltip: '画中画',
onTap: () async {
if (Utils.isDesktop) {
plPlayerController.toggleDesktopPip();
return;
}
try {
var floating = Floating();
if ((await floating.isPipAvailable) == true) {