Make sure home_page is never in fullscreen
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user