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/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(
|
||||||
|
|||||||
@@ -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],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user