From 142a467e868ca9d3819967c5bc658ae122ea9fcf Mon Sep 17 00:00:00 2001 From: Julian Mutter Date: Sun, 26 Oct 2025 09:07:54 +0100 Subject: [PATCH] add fullscree toggle to home page --- lib/home_page.dart | 45 +++++++++++++++++++++++++++++++------- lib/sheet_viewer_page.dart | 14 ++++++++++++ 2 files changed, 51 insertions(+), 8 deletions(-) diff --git a/lib/home_page.dart b/lib/home_page.dart index 7929dd2..1fe94f4 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_fullscreen/flutter_fullscreen.dart'; import 'package:logging/logging.dart'; import 'package:sheetless/login_page.dart'; import 'package:sheetless/sheet_viewer_page.dart'; @@ -17,7 +19,7 @@ class MyHomePage extends StatefulWidget { State createState() => _MyHomePageState(); } -class _MyHomePageState extends State { +class _MyHomePageState extends State with FullScreenListener { ApiClient? apiClient; Future apiLoggedIn = Future.value(false); final StorageHelper _storageHelper = StorageHelper(); @@ -29,11 +31,22 @@ class _MyHomePageState extends State { @override void initState() { + FullScreen.addListener(this); + + // Load saved fullscreen + FullScreen.setFullScreen(widget.config.fullscreen); + super.initState(); _loadAppInfo(); sheets = acquireSheets(); } + @override + void dispose() { + FullScreen.removeListener(this); + super.dispose(); + } + Future _loadAppInfo() async { final info = await PackageInfo.fromPlatform(); setState(() { @@ -120,13 +133,17 @@ class _MyHomePageState extends State { switchShufflingState(!shuffling); }, ), - // ListTile( - // leading: const Icon(Icons.sync), - // title: const Text('Sync Mode'), - // onTap: () { - // // TODO - // }, - // ), + ListTile( + leading: Icon( + widget.config.fullscreen + ? Icons.fullscreen_exit + : Icons.fullscreen, + ), + title: widget.config.fullscreen + ? const Text('Exit Fullscreen') + : const Text('Enter Fullscreen'), + onTap: toggleFullscreen, + ), ListTile( leading: const Icon(Icons.logout), title: const Text('Logout'), @@ -150,6 +167,18 @@ class _MyHomePageState extends State { ); } + @override + void onFullScreenChanged(bool enabled, SystemUiMode? systemUiMode) { + setState(() { + widget.config.fullscreen = enabled; + _storageHelper.writeConfig(widget.config); + }); + } + + void toggleFullscreen() { + FullScreen.setFullScreen(!widget.config.fullscreen); + } + @override Widget build(BuildContext context) { return Scaffold( diff --git a/lib/sheet_viewer_page.dart b/lib/sheet_viewer_page.dart index a11d8ef..aab8af9 100644 --- a/lib/sheet_viewer_page.dart +++ b/lib/sheet_viewer_page.dart @@ -68,6 +68,9 @@ class _SheetViewerPageState extends State document = await PdfDocument.openFile(file.path); } + setState(() { + // document changed + }); return true; } @@ -97,6 +100,17 @@ class _SheetViewerPageState extends State return AppBar( title: Text(widget.sheet.name), actions: [ + IconButton( + icon: Icon( + widget.config.fullscreen ? Icons.fullscreen_exit : Icons.fullscreen, + ), + tooltip: widget.config.fullscreen + ? 'Exit Fullscreen' + : 'Enter Fullscreen', + onPressed: () { + toggleFullscreen(); + }, + ), IconButton( onPressed: () { setState(() {