add fullscree toggle to home page

This commit is contained in:
2025-10-26 09:07:54 +01:00
parent 3264d8f8e7
commit 142a467e86
2 changed files with 51 additions and 8 deletions

View File

@@ -1,4 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_fullscreen/flutter_fullscreen.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import 'package:sheetless/login_page.dart'; import 'package:sheetless/login_page.dart';
import 'package:sheetless/sheet_viewer_page.dart'; import 'package:sheetless/sheet_viewer_page.dart';
@@ -17,7 +19,7 @@ class MyHomePage extends StatefulWidget {
State<MyHomePage> createState() => _MyHomePageState(); State<MyHomePage> createState() => _MyHomePageState();
} }
class _MyHomePageState extends State<MyHomePage> { class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
ApiClient? apiClient; ApiClient? apiClient;
Future<bool> apiLoggedIn = Future.value(false); Future<bool> apiLoggedIn = Future.value(false);
final StorageHelper _storageHelper = StorageHelper(); final StorageHelper _storageHelper = StorageHelper();
@@ -29,11 +31,22 @@ class _MyHomePageState extends State<MyHomePage> {
@override @override
void initState() { void initState() {
FullScreen.addListener(this);
// Load saved fullscreen
FullScreen.setFullScreen(widget.config.fullscreen);
super.initState(); super.initState();
_loadAppInfo(); _loadAppInfo();
sheets = acquireSheets(); sheets = acquireSheets();
} }
@override
void dispose() {
FullScreen.removeListener(this);
super.dispose();
}
Future<void> _loadAppInfo() async { Future<void> _loadAppInfo() async {
final info = await PackageInfo.fromPlatform(); final info = await PackageInfo.fromPlatform();
setState(() { setState(() {
@@ -120,13 +133,17 @@ class _MyHomePageState extends State<MyHomePage> {
switchShufflingState(!shuffling); switchShufflingState(!shuffling);
}, },
), ),
// ListTile( ListTile(
// leading: const Icon(Icons.sync), leading: Icon(
// title: const Text('Sync Mode'), widget.config.fullscreen
// onTap: () { ? Icons.fullscreen_exit
// // TODO : Icons.fullscreen,
// }, ),
// ), title: widget.config.fullscreen
? const Text('Exit Fullscreen')
: const Text('Enter Fullscreen'),
onTap: toggleFullscreen,
),
ListTile( ListTile(
leading: const Icon(Icons.logout), leading: const Icon(Icons.logout),
title: const Text('Logout'), title: const Text('Logout'),
@@ -150,6 +167,18 @@ class _MyHomePageState extends State<MyHomePage> {
); );
} }
@override
void onFullScreenChanged(bool enabled, SystemUiMode? systemUiMode) {
setState(() {
widget.config.fullscreen = enabled;
_storageHelper.writeConfig(widget.config);
});
}
void toggleFullscreen() {
FullScreen.setFullScreen(!widget.config.fullscreen);
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(

View File

@@ -68,6 +68,9 @@ class _SheetViewerPageState extends State<SheetViewerPage>
document = await PdfDocument.openFile(file.path); document = await PdfDocument.openFile(file.path);
} }
setState(() {
// document changed
});
return true; return true;
} }
@@ -97,6 +100,17 @@ class _SheetViewerPageState extends State<SheetViewerPage>
return AppBar( return AppBar(
title: Text(widget.sheet.name), title: Text(widget.sheet.name),
actions: [ actions: [
IconButton(
icon: Icon(
widget.config.fullscreen ? Icons.fullscreen_exit : Icons.fullscreen,
),
tooltip: widget.config.fullscreen
? 'Exit Fullscreen'
: 'Enter Fullscreen',
onPressed: () {
toggleFullscreen();
},
),
IconButton( IconButton(
onPressed: () { onPressed: () {
setState(() { setState(() {