persist twoPageMode

This commit is contained in:
2025-09-25 18:33:50 +02:00
parent 1fd5783244
commit c5089f8de1
4 changed files with 58 additions and 18 deletions

View File

@@ -6,15 +6,18 @@ import 'package:logging/logging.dart';
import 'package:pdfrx/pdfrx.dart';
import 'package:sheetless/api.dart';
import 'package:sheetless/sheet.dart';
import 'package:sheetless/storage_helper.dart';
class SheetViewerPage extends StatefulWidget {
final Sheet sheet;
final ApiClient apiClient;
final Config config;
const SheetViewerPage({
super.key,
required this.sheet,
required this.apiClient,
required this.config,
});
@override
@@ -23,12 +26,12 @@ class SheetViewerPage extends StatefulWidget {
class _SheetViewerPageState extends State<SheetViewerPage> {
final log = Logger("SheetViewerPage");
final StorageHelper storageHelper = StorageHelper();
int page = 1;
int numPages = 1;
bool isFullscreen = false;
late Future<bool> documentLoaded;
PdfDocument? document;
bool twoPageMode = true;
bool paintMode = false;
@override
@@ -63,8 +66,10 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
}
void toggleFullscreen() {
isFullscreen = !isFullscreen;
if (isFullscreen) {
widget.config.fullscreen = !widget.config.fullscreen;
storageHelper.writeConfig(widget.config);
if (widget.config.fullscreen) {
log.info("enter fullscreen");
// enter fullscreen
SystemChrome.setEnabledSystemUIMode(
@@ -90,7 +95,7 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
IconButton(
onPressed: () {
setState(() {
if (twoPageMode) {
if (widget.config.twoPageMode) {
// TODO: notification that paint mode only in single page mode
} else {
paintMode = !paintMode;
@@ -102,14 +107,17 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
IconButton(
onPressed: () {
setState(() {
twoPageMode = !twoPageMode;
if (twoPageMode) {
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(twoPageMode ? Icons.filter_1 : Icons.filter_2),
icon: Icon(
widget.config.twoPageMode ? Icons.filter_1 : Icons.filter_2,
),
),
],
),
@@ -164,7 +172,7 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
document: document,
pageNumber: page,
maximumDpi: 300,
alignment: twoPageMode
alignment: widget.config.twoPageMode
? Alignment.centerRight
: Alignment.center,
),
@@ -179,7 +187,7 @@ class _SheetViewerPageState extends State<SheetViewerPage> {
),
),
Visibility(
visible: twoPageMode == true,
visible: widget.config.twoPageMode == true,
child: Expanded(
child: Stack(
children: [