add fullscreen mode
This commit is contained in:
@@ -8,6 +8,7 @@ import 'package:sheetless/api.dart';
|
||||
import 'package:sheetless/bt_pedal_shortcuts.dart';
|
||||
import 'package:sheetless/sheet.dart';
|
||||
import 'package:sheetless/storage_helper.dart';
|
||||
import 'package:flutter_fullscreen/flutter_fullscreen.dart';
|
||||
|
||||
class SheetViewerPage extends StatefulWidget {
|
||||
final Sheet sheet;
|
||||
@@ -25,7 +26,8 @@ class SheetViewerPage extends StatefulWidget {
|
||||
State<SheetViewerPage> createState() => _SheetViewerPageState();
|
||||
}
|
||||
|
||||
class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
class _SheetViewerPageState extends State<SheetViewerPage>
|
||||
with FullScreenListener {
|
||||
final log = Logger("SheetViewerPage");
|
||||
final StorageHelper storageHelper = StorageHelper();
|
||||
|
||||
@@ -37,12 +39,14 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
FullScreen.addListener(this);
|
||||
super.initState();
|
||||
documentLoaded = loadPdf();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
FullScreen.removeListener(this);
|
||||
document?.dispose(); // Make sure document gets garbage collected
|
||||
super.dispose();
|
||||
}
|
||||
@@ -66,25 +70,16 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
return true;
|
||||
}
|
||||
|
||||
void toggleFullscreen() {
|
||||
widget.config.fullscreen = !widget.config.fullscreen;
|
||||
storageHelper.writeConfig(widget.config);
|
||||
@override
|
||||
void onFullScreenChanged(bool enabled, SystemUiMode? systemUiMode) {
|
||||
setState(() {
|
||||
widget.config.fullscreen = enabled;
|
||||
storageHelper.writeConfig(widget.config);
|
||||
});
|
||||
}
|
||||
|
||||
if (widget.config.fullscreen) {
|
||||
log.info("enter fullscreen");
|
||||
// enter fullscreen
|
||||
SystemChrome.setEnabledSystemUIMode(
|
||||
SystemUiMode.immersiveSticky,
|
||||
overlays: [],
|
||||
);
|
||||
} else {
|
||||
// exit fullscreen
|
||||
log.info("exit fullscreen");
|
||||
SystemChrome.setEnabledSystemUIMode(
|
||||
SystemUiMode.edgeToEdge,
|
||||
overlays: SystemUiOverlay.values,
|
||||
);
|
||||
}
|
||||
void toggleFullscreen() {
|
||||
FullScreen.setFullScreen(!widget.config.fullscreen);
|
||||
}
|
||||
|
||||
void turnPage(int numTurns) {
|
||||
@@ -100,38 +95,42 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
onTurnPageForward: () => turnPage(1),
|
||||
onTurnPageBackward: () => turnPage(-1),
|
||||
child: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text(widget.sheet.name),
|
||||
actions: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
if (widget.config.twoPageMode) {
|
||||
// TODO: notification that paint mode only in single page mode
|
||||
} else {
|
||||
paintMode = !paintMode;
|
||||
}
|
||||
});
|
||||
},
|
||||
icon: Icon(Icons.brush),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
widget.config.twoPageMode = !widget.config.twoPageMode;
|
||||
storageHelper.writeConfig(widget.config);
|
||||
if (widget.config.twoPageMode) {
|
||||
paintMode = false;
|
||||
// TODO: notification that paint mode was deactivated since only possible in single page mode
|
||||
}
|
||||
});
|
||||
},
|
||||
icon: Icon(
|
||||
widget.config.twoPageMode ? Icons.filter_1 : Icons.filter_2,
|
||||
appBar: widget.config.fullscreen
|
||||
? null
|
||||
: AppBar(
|
||||
title: Text(widget.sheet.name),
|
||||
actions: [
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
if (widget.config.twoPageMode) {
|
||||
// TODO: notification that paint mode only in single page mode
|
||||
} else {
|
||||
paintMode = !paintMode;
|
||||
}
|
||||
});
|
||||
},
|
||||
icon: Icon(Icons.brush),
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
widget.config.twoPageMode = !widget.config.twoPageMode;
|
||||
storageHelper.writeConfig(widget.config);
|
||||
if (widget.config.twoPageMode) {
|
||||
paintMode = false;
|
||||
// TODO: notification that paint mode was deactivated since only possible in single page mode
|
||||
}
|
||||
});
|
||||
},
|
||||
icon: Icon(
|
||||
widget.config.twoPageMode
|
||||
? Icons.filter_1
|
||||
: Icons.filter_2,
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
body: FutureBuilder(
|
||||
future: documentLoaded,
|
||||
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
|
||||
@@ -155,12 +154,13 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
|
||||
// print("Touch at x = ${details.localPosition.dx}");
|
||||
// print("Screenwidth = ${screenWidth}");
|
||||
// Check where the user tapped
|
||||
// if (details.localPosition.dy < 100) {
|
||||
// TODO
|
||||
// setState(() {
|
||||
// toggleFullscreen();
|
||||
// });
|
||||
if (details.localPosition.dx < screenWidth / 2) {
|
||||
if (details.localPosition.dy < 100) {
|
||||
// TODO
|
||||
setState(() {
|
||||
toggleFullscreen();
|
||||
});
|
||||
} else if (details.localPosition.dx <
|
||||
screenWidth / 2) {
|
||||
// Left half of the screen
|
||||
turnPage(-1);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user