Reapply "hide systembar when preview"

This reverts commit d6bce6aa63.
This commit is contained in:
dom
2026-04-29 12:13:12 +08:00
parent 7e044e61e2
commit e185ed1a85
7 changed files with 73 additions and 28 deletions

View File

@@ -25,10 +25,13 @@ import 'package:PiliPlus/common/widgets/image_viewer/image.dart';
import 'package:PiliPlus/common/widgets/image_viewer/loading_indicator.dart';
import 'package:PiliPlus/common/widgets/image_viewer/viewer.dart';
import 'package:PiliPlus/common/widgets/scroll_physics.dart';
import 'package:PiliPlus/main.dart' show tmpPadding;
import 'package:PiliPlus/models/common/image_preview_type.dart';
import 'package:PiliPlus/plugin/pl_player/utils/fullscreen.dart';
import 'package:PiliPlus/utils/extension/num_ext.dart';
import 'package:PiliPlus/utils/extension/string_ext.dart';
import 'package:PiliPlus/utils/image_utils.dart';
import 'package:PiliPlus/utils/max_screen_size.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:PiliPlus/utils/platform_utils.dart';
import 'package:PiliPlus/utils/storage_pref.dart';
@@ -76,6 +79,7 @@ class _GalleryViewerState extends State<GalleryViewer>
late final int _quality;
late final RxInt _currIndex;
GlobalKey? _key;
EdgeInsets? _padding;
late bool _hasInit = false;
Player? _player;
@@ -170,6 +174,45 @@ class _GalleryViewerState extends State<GalleryViewer>
);
}
late final bool _hideSystemBar;
void _initHideSystemBar() {
if (Platform.isAndroid) {
if (showSystemBar_) {
final view = WidgetsBinding.instance.platformDispatcher.views.first;
final size = view.physicalSize / view.devicePixelRatio;
_hideSystemBar = !MaxScreenSize.isWindowMode(
width: size.width,
height: size.height,
);
} else {
_hideSystemBar = false;
}
} else if (Platform.isIOS) {
_hideSystemBar = showSystemBar_;
} else {
_hideSystemBar = false;
}
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
if (_padding == null) {
final padding = MediaQuery.viewPaddingOf(context);
_padding = padding;
_initHideSystemBar();
if (_hideSystemBar) {
tmpPadding = padding;
hideSystemBar()!.whenComplete(
() => WidgetsBinding.instance.addPostFrameCallback(
(_) => tmpPadding = null,
),
);
}
}
}
Matrix4 _onTransform(double val) {
final scale = val.lerp(1.0, 0.25);
@@ -259,6 +302,9 @@ class _GalleryViewerState extends State<GalleryViewer>
}
Future.delayed(const Duration(milliseconds: 200), _currIndex.close);
super.dispose();
if (_hideSystemBar) {
showSystemBar();
}
}
void _onPointerDown(PointerDownEvent event) {
@@ -311,9 +357,7 @@ class _GalleryViewerState extends State<GalleryViewer>
right: 0,
child: IgnorePointer(
child: Container(
padding:
MediaQuery.viewPaddingOf(context) +
const EdgeInsets.fromLTRB(12, 8, 20, 8),
padding: _padding! + const EdgeInsets.fromLTRB(12, 8, 20, 8),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,

View File

@@ -48,6 +48,8 @@ import 'package:window_manager/window_manager.dart' hide calcWindowPosition;
WebViewEnvironment? webViewEnvironment;
EdgeInsets? tmpPadding;
Future<void> _initDownPath() async {
if (PlatformUtils.isDesktop) {
final customDownPath = Pref.downloadPath;
@@ -317,16 +319,20 @@ class MyApp extends StatelessWidget {
data: mediaQuery.copyWith(
textScaler: textScaler,
size: mediaQuery.size / uiScale,
padding: mediaQuery.padding / uiScale,
padding: (tmpPadding ?? mediaQuery.padding) / uiScale,
viewInsets: mediaQuery.viewInsets / uiScale,
viewPadding: mediaQuery.viewPadding / uiScale,
viewPadding: (tmpPadding ?? mediaQuery.viewPadding) / uiScale,
devicePixelRatio: mediaQuery.devicePixelRatio * uiScale,
),
child: child!,
);
} else {
child = MediaQuery(
data: mediaQuery.copyWith(textScaler: textScaler),
data: mediaQuery.copyWith(
textScaler: textScaler,
padding: tmpPadding,
viewPadding: tmpPadding,
),
child: child!,
);
}

View File

@@ -86,7 +86,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
..addStatusLister(playerListener);
PlPlayerController.setPlayCallBack(plPlayerController.play);
if (plPlayerController.removeSafeArea) {
hideStatusBar();
hideSystemBar();
}
}

View File

@@ -142,7 +142,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
videoDetailController = Get.put(VideoDetailController(), tag: heroTag);
if (videoDetailController.removeSafeArea) {
hideStatusBar();
hideSystemBar();
}
if (videoDetailController.showReply) {
@@ -342,7 +342,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
}
if (!videoDetailController.removeSafeArea) {
showStatusBar();
showSystemBar();
}
if (!videoDetailController.plPlayerController.isCloseAll) {

View File

@@ -1474,7 +1474,7 @@ class PlPlayerController with BlockConfigMixin {
try {
if (status) {
if (PlatformUtils.isMobile) {
hideStatusBar();
hideSystemBar();
await changeOrientation(
isVertical: isVertical,
orientation: orientation,
@@ -1485,7 +1485,7 @@ class PlPlayerController with BlockConfigMixin {
} else {
if (PlatformUtils.isMobile) {
if (!removeSafeArea) {
showStatusBar();
showSystemBar();
}
if (orientation == null && mode == .none) {
return;
@@ -1632,7 +1632,7 @@ class PlPlayerController with BlockConfigMixin {
_playerCount = 0;
if (removeSafeArea) {
showStatusBar();
showSystemBar();
}
danmakuController = null;
_stopOrientationListener();

View File

@@ -62,21 +62,22 @@ Future<void>? fullMode() {
);
}
bool _showStatusBar = true;
Future<void>? hideStatusBar() {
if (!_showStatusBar) {
bool _showSystemBar = true;
bool get showSystemBar_ => _showSystemBar;
Future<void>? hideSystemBar() {
if (!_showSystemBar) {
return null;
}
_showStatusBar = false;
_showSystemBar = false;
return SystemChrome.setEnabledSystemUIMode(.immersiveSticky);
}
//退出全屏显示
Future<void>? showStatusBar() {
if (_showStatusBar) {
Future<void>? showSystemBar() {
if (_showSystemBar) {
return null;
}
_showStatusBar = true;
_showSystemBar = true;
return SystemChrome.setEnabledSystemUIMode(
Platform.isAndroid && Utils.sdkInt < 29 ? .manual : .edgeToEdge,
overlays: SystemUiOverlay.values,

View File

@@ -30,7 +30,6 @@ import 'package:PiliPlus/plugin/pl_player/models/bottom_progress_behavior.dart';
import 'package:PiliPlus/plugin/pl_player/models/fullscreen_mode.dart';
import 'package:PiliPlus/plugin/pl_player/models/hwdec_type.dart';
import 'package:PiliPlus/plugin/pl_player/models/play_repeat.dart';
import 'package:PiliPlus/utils/extension/context_ext.dart';
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/login_utils.dart';
@@ -599,14 +598,9 @@ abstract final class Pref {
_setting.get(SettingBoxKey.horizontalScreen) ?? isTablet;
static bool get isTablet {
bool isTablet;
if (Get.context != null) {
isTablet = Get.context!.isTablet;
} else {
final view = WidgetsBinding.instance.platformDispatcher.views.first;
final screenSize = view.physicalSize / view.devicePixelRatio;
isTablet = screenSize.shortestSide >= 600;
}
final view = WidgetsBinding.instance.platformDispatcher.views.first;
final size = view.physicalSize / view.devicePixelRatio;
final isTablet = size.shortestSide >= 600;
_setting.put(SettingBoxKey.horizontalScreen, isTablet);
return isTablet;
}