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/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<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
ApiClient? apiClient;
Future<bool> apiLoggedIn = Future.value(false);
final StorageHelper _storageHelper = StorageHelper();
@@ -29,11 +31,22 @@ class _MyHomePageState extends State<MyHomePage> {
@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<void> _loadAppInfo() async {
final info = await PackageInfo.fromPlatform();
setState(() {
@@ -120,13 +133,17 @@ class _MyHomePageState extends State<MyHomePage> {
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<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
Widget build(BuildContext context) {
return Scaffold(