Files
Client/lib/view/pages/marianum_message/marianum_message_view.dart
T

50 lines
1.6 KiB
Dart

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../../state/app/modules/marianum_message/bloc/marianum_message_state.dart';
import '../../../widget/confirm_dialog.dart';
import '../../../widget/info_dialog.dart';
class MessageView extends StatefulWidget {
final String basePath;
final MarianumMessage message;
const MessageView({super.key, required this.basePath, required this.message});
@override
State<MessageView> createState() => _MessageViewState();
}
class _MessageViewState extends State<MessageView> {
@override
Widget build(BuildContext context) => Scaffold(
appBar: AppBar(
title: Text(widget.message.name),
),
body: SfPdfViewer.network(
widget.basePath + widget.message.url,
enableHyperlinkNavigation: true,
onDocumentLoadFailed: (PdfDocumentLoadFailedDetails e) {
Navigator.of(context).pop();
InfoDialog.show(
context,
"Dokument '${widget.message.name}' konnte nicht geladen werden:\n${e.description}",
title: 'Fehler beim öffnen',
);
},
onHyperlinkClicked: (PdfHyperlinkClickedDetails e) {
showDialog(
context: context,
builder: (context) => ConfirmDialog(
title: 'Link öffnen',
content: 'Möchtest du den folgenden Link öffnen?\n${e.uri}',
confirmButton: 'Öffnen',
onConfirm: () => launchUrl(Uri.parse(e.uri), mode: LaunchMode.externalApplication),
),
);
},
),
);
}