Skip to content

Commit 35a662b

Browse files
author
liuchuancong
committed
修复全屏
1 parent 3327059 commit 35a662b

4 files changed

Lines changed: 24 additions & 9 deletions

File tree

lib/common/global/platform/desktop_manager.dart

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:ui';
33
import 'package:flutter/material.dart';
44
import 'package:pure_live/plugins/utils.dart';
55
import 'package:tray_manager/tray_manager.dart';
6+
import 'package:pure_live/player/fullscreen.dart';
67
import 'package:window_manager/window_manager.dart';
78
import 'package:flutter_acrylic/flutter_acrylic.dart';
89
import 'package:pure_live/common/global/platform_utils.dart';
@@ -183,6 +184,11 @@ class DesktopManager {
183184
}
184185

185186
mixin DesktopWindowMixin<T extends StatefulWidget> on State<T> implements WindowListener, TrayListener {
187+
Future<void> saveWindowBounds() async {
188+
if (await windowManager.isFullScreen()) return;
189+
WindowService.normalWindowBounds = await windowManager.getBounds();
190+
}
191+
186192
@override
187193
void onWindowClose() => DesktopManager.handleWindowClose();
188194

@@ -215,11 +221,17 @@ mixin DesktopWindowMixin<T extends StatefulWidget> on State<T> implements Window
215221
@override
216222
void onWindowResize() {}
217223
@override
218-
void onWindowResized() {}
224+
void onWindowResized() async {
225+
await saveWindowBounds();
226+
}
227+
219228
@override
220229
void onWindowMove() {}
221230
@override
222-
void onWindowMoved() {}
231+
void onWindowMoved() async {
232+
await saveWindowBounds();
233+
}
234+
223235
@override
224236
void onWindowEnterFullScreen() {}
225237
@override

lib/modules/live_play/live_play_controller.dart

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,9 @@ class LivePlayController extends StateController with GetSingleTickerProviderSta
7575
success.value = false;
7676
SwitchableGlobalPlayer().stop();
7777
tabController.dispose();
78-
BackButtonInterceptor.removeByName("live_play_page");
78+
if (Platform.isAndroid) {
79+
BackButtonInterceptor.removeByName("live_play_page");
80+
}
7981
super.onClose();
8082
}
8183

lib/player/fullscreen.dart

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class WindowService {
1313
WindowService._internal();
1414

1515
// 用于存储进入全屏前的窗口位置和大小
16-
Rect? _normalWindowBounds;
16+
static Rect? normalWindowBounds;
1717

1818
//横屏
1919
Future<void> landScape() async {
@@ -72,10 +72,10 @@ class WindowService {
7272
await windowManager.setHasShadow(true);
7373
await windowManager.setTitleBarStyle(TitleBarStyle.normal);
7474

75-
if (_normalWindowBounds != null) {
76-
await windowManager.setBounds(_normalWindowBounds!);
75+
if (normalWindowBounds != null) {
76+
await windowManager.setBounds(normalWindowBounds!);
7777
} else {
78-
await windowManager.setSize(const Size(1280, 720));
78+
await windowManager.setSize(const Size(1080, 720));
7979
await windowManager.center();
8080
}
8181
if (Platform.isWindows) {
@@ -85,7 +85,8 @@ class WindowService {
8585

8686
Future<void> doEnterWindowFullScreen() async {
8787
// 1. 先彻底移除装饰和阴影
88-
_normalWindowBounds = await windowManager.getBounds();
88+
await Future.delayed(const Duration(milliseconds: 50));
89+
normalWindowBounds = await windowManager.getBounds();
8990
await windowManager.setHasShadow(false);
9091
// 建议增加:隐藏标题栏,防止 Windows 11 顶部出现细线
9192
await windowManager.setTitleBarStyle(TitleBarStyle.hidden, windowButtonVisibility: false);

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: pure_live
22
description: 纯粹直播,一款开源的第三方多平台直播聚合播放器.
3-
3+
publish_to: none
44
version: 2.0.10+21
55

66
environment:

0 commit comments

Comments
 (0)