Reapply "hide systembar when preview"

This reverts commit d6bce6aa63.
This commit is contained in:
dom
2026-04-29 12:13:12 +08:00
parent 7b51b6900f
commit c7864ff4a3
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,