Files
sheetless/lib/sheetview.dart

64 lines
1.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:pdfx/pdfx.dart';
import 'package:sheetless/api.dart';
import 'package:sheetless/sheet.dart';
class SheetViewerPage extends StatefulWidget {
final Sheet sheet;
final ApiClient apiClient;
const SheetViewerPage(
{super.key, required this.sheet, required this.apiClient});
@override
State<SheetViewerPage> createState() => _SheetViewerPageState();
}
class _SheetViewerPageState extends State<SheetViewerPage> {
@override
void initState() {
super.initState();
}
Future<PdfController> loadPdf() async {
var file = await widget.apiClient.getPdfFileCached(widget.sheet.uuid);
if (file == null) {
throw Exception("Failed fetching pdf file");
}
return PdfController(document: PdfDocument.openFile(file.path));
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.sheet.name),
),
body: FutureBuilder(
future: loadPdf(),
builder:
(BuildContext context, AsyncSnapshot<PdfController> snapshot) {
if (snapshot.hasData) {
return PdfView(
controller: snapshot.data!,
pageSnapping: false,
scrollDirection: Axis.vertical,
);
} else if (snapshot.hasError) {
return Center(
child: Text(
style: Theme.of(context)
.textTheme
.displaySmall!
.copyWith(color: Colors.red),
textAlign: TextAlign.center,
snapshot.error.toString()));
} else {
return const Center(child: CircularProgressIndicator());
}
}),
);
}
}