Fix Fullscreen switch (#229)

* Fix Fullscreen switch for windows

* Fix Fullscreen switch for windows
This commit is contained in:
AnxuNA
2025-02-26 10:43:28 +08:00
committed by GitHub
parent c633021963
commit 30cbfb54ef
2 changed files with 18 additions and 1 deletions

View File

@@ -6,10 +6,15 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/app.dart';
import 'package:venera/foundation/comic_source/comic_source.dart'; import 'package:venera/foundation/comic_source/comic_source.dart';
import 'package:venera/foundation/global_state.dart';
import 'package:window_manager/window_manager.dart'; import 'package:window_manager/window_manager.dart';
const _kTitleBarHeight = 36.0; const _kTitleBarHeight = 36.0;
void toggleWindowFrame() {
GlobalState.find<_WindowFrameState>().toggleWindowFrame();
}
class WindowFrame extends StatefulWidget { class WindowFrame extends StatefulWidget {
const WindowFrame(this.child, {super.key}); const WindowFrame(this.child, {super.key});
@@ -19,10 +24,14 @@ class WindowFrame extends StatefulWidget {
State<WindowFrame> createState() => _WindowFrameState(); State<WindowFrame> createState() => _WindowFrameState();
} }
class _WindowFrameState extends State<WindowFrame> { class _WindowFrameState extends AutomaticGlobalState<WindowFrame> {
bool isHideWindowFrame = false; bool isHideWindowFrame = false;
bool useDarkTheme = false; bool useDarkTheme = false;
void toggleWindowFrame() {
isHideWindowFrame = !isHideWindowFrame;
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
if (App.isMobile) return widget.child; if (App.isMobile) return widget.child;
@@ -99,6 +108,9 @@ class _WindowFrameState extends State<WindowFrame> {
return body; return body;
} }
} }
@override
Object? get key => 'WindowFrame';
} }
class WindowButtons extends StatefulWidget { class WindowButtons extends StatefulWidget {

View File

@@ -15,6 +15,7 @@ import 'package:photo_view/photo_view_gallery.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
import 'package:venera/components/components.dart'; import 'package:venera/components/components.dart';
import 'package:venera/components/custom_slider.dart'; import 'package:venera/components/custom_slider.dart';
import 'package:venera/components/window_frame.dart';
import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/app.dart';
import 'package:venera/foundation/appdata.dart'; import 'package:venera/foundation/appdata.dart';
import 'package:venera/foundation/cache_manager.dart'; import 'package:venera/foundation/cache_manager.dart';
@@ -191,6 +192,9 @@ class _ReaderState extends State<Reader>
@override @override
void dispose() { void dispose() {
if (isFullscreen) {
fullscreen();
}
autoPageTurningTimer?.cancel(); autoPageTurningTimer?.cancel();
focusNode.dispose(); focusNode.dispose();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
@@ -498,6 +502,7 @@ mixin class _ReaderWindow {
void fullscreen() { void fullscreen() {
windowManager.setFullScreen(!isFullscreen); windowManager.setFullScreen(!isFullscreen);
isFullscreen = !isFullscreen; isFullscreen = !isFullscreen;
toggleWindowFrame();
} }
} }