Make sure home_page is never in fullscreen

This commit is contained in:
2026-01-24 20:25:07 +01:00
parent f564a39975
commit 3c5ba001ab
2 changed files with 25 additions and 30 deletions

View File

@@ -1,8 +1,8 @@
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/main.dart';
import 'package:sheetless/sheet_viewer_page.dart';
import 'package:sheetless/storage_helper.dart';
import 'package:package_info_plus/package_info_plus.dart';
@@ -19,7 +19,7 @@ class MyHomePage extends StatefulWidget {
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
class _MyHomePageState extends State<MyHomePage> with RouteAware {
ApiClient? apiClient;
Future<bool> apiLoggedIn = Future.value(false);
final StorageHelper _storageHelper = StorageHelper();
@@ -31,10 +31,13 @@ class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
@override
void initState() {
FullScreen.addListener(this);
// Deactivate fullscreen by default
FullScreen.setFullScreen(false);
// Load saved fullscreen
FullScreen.setFullScreen(widget.config.fullscreen);
// So RouteAware gets bound
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
routeObserver.subscribe(this, ModalRoute.of(context)!);
});
super.initState();
_loadAppInfo();
@@ -43,10 +46,21 @@ class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
@override
void dispose() {
FullScreen.removeListener(this);
super.dispose();
}
@override
void didPush() {
FullScreen.setFullScreen(false);
super.didPush();
}
@override
void didPopNext() {
FullScreen.setFullScreen(false);
super.didPopNext();
}
Future<void> _loadAppInfo() async {
final info = await PackageInfo.fromPlatform();
setState(() {
@@ -143,17 +157,6 @@ class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
switchShufflingState(!shuffling);
},
),
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'),
@@ -177,18 +180,6 @@ class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
);
}
@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(
@@ -205,7 +196,9 @@ class _MyHomePageState extends State<MyHomePage> with FullScreenListener {
sheets: snapshot.data!,
onSheetOpenRequest: (sheet) {
_storageHelper.writeSheetAccessTime(
sheet.uuid, DateTime.now());
sheet.uuid,
DateTime.now(),
);
Navigator.push(
context,
MaterialPageRoute(

View File

@@ -10,6 +10,7 @@ import 'package:flutter_fullscreen/flutter_fullscreen.dart';
import 'login_page.dart';
final RouteObserver<ModalRoute> routeObserver = RouteObserver<ModalRoute>();
Future<void> main() async {
Logger.root.level = Level.ALL; // defaults to Level.INFO
Logger.root.onRecord.listen((record) {
@@ -42,6 +43,7 @@ class MyApp extends StatelessWidget {
title: 'Sheetless',
theme: ThemeData(useMaterial3: true, primarySwatch: Colors.blue),
home: const LoginPage(),
navigatorObservers: [routeObserver],
);
}
}