From 30cbfb54ef2cd0da5c8e4686e07972a2a96433a3 Mon Sep 17 00:00:00 2001 From: AnxuNA <41771421+axlmly@users.noreply.github.com> Date: Wed, 26 Feb 2025 10:43:28 +0800 Subject: [PATCH] Fix Fullscreen switch (#229) * Fix Fullscreen switch for windows * Fix Fullscreen switch for windows --- lib/components/window_frame.dart | 14 +++++++++++++- lib/pages/reader/reader.dart | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/lib/components/window_frame.dart b/lib/components/window_frame.dart index bc57a99..42efc48 100644 --- a/lib/components/window_frame.dart +++ b/lib/components/window_frame.dart @@ -6,10 +6,15 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:venera/foundation/app.dart'; import 'package:venera/foundation/comic_source/comic_source.dart'; +import 'package:venera/foundation/global_state.dart'; import 'package:window_manager/window_manager.dart'; const _kTitleBarHeight = 36.0; +void toggleWindowFrame() { + GlobalState.find<_WindowFrameState>().toggleWindowFrame(); +} + class WindowFrame extends StatefulWidget { const WindowFrame(this.child, {super.key}); @@ -19,10 +24,14 @@ class WindowFrame extends StatefulWidget { State createState() => _WindowFrameState(); } -class _WindowFrameState extends State { +class _WindowFrameState extends AutomaticGlobalState { bool isHideWindowFrame = false; bool useDarkTheme = false; + void toggleWindowFrame() { + isHideWindowFrame = !isHideWindowFrame; + } + @override Widget build(BuildContext context) { if (App.isMobile) return widget.child; @@ -99,6 +108,9 @@ class _WindowFrameState extends State { return body; } } + + @override + Object? get key => 'WindowFrame'; } class WindowButtons extends StatefulWidget { diff --git a/lib/pages/reader/reader.dart b/lib/pages/reader/reader.dart index d1d0cea..bb35755 100644 --- a/lib/pages/reader/reader.dart +++ b/lib/pages/reader/reader.dart @@ -15,6 +15,7 @@ import 'package:photo_view/photo_view_gallery.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:venera/components/components.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/appdata.dart'; import 'package:venera/foundation/cache_manager.dart'; @@ -191,6 +192,9 @@ class _ReaderState extends State @override void dispose() { + if (isFullscreen) { + fullscreen(); + } autoPageTurningTimer?.cancel(); focusNode.dispose(); SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge); @@ -498,6 +502,7 @@ mixin class _ReaderWindow { void fullscreen() { windowManager.setFullScreen(!isFullscreen); isFullscreen = !isFullscreen; + toggleWindowFrame(); } }