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

View File

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