Add SfTheme wrapper for PDF viewer and update syncfusion_flutter_core dependency

This commit is contained in:
Leon Bösche
2026-01-16 15:01:51 +01:00
parent b006187320
commit b27cc5eaf0
3 changed files with 44 additions and 22 deletions

View File

@@ -12,6 +12,7 @@ import '../blocs/session/session_state.dart';
import '../services/file_service.dart';
import '../injection.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import 'package:syncfusion_flutter_core/theme.dart';
import 'package:go_router/go_router.dart';
import 'package:http/http.dart' as http;
import 'package:url_launcher/url_launcher.dart';
@@ -200,15 +201,25 @@ class _DocumentViewerModalState extends State<DocumentViewerModal> {
if (state is DocumentViewerReady) {
// Handle different file types based on MIME type
if (state.caps.isPdf) {
// PDF viewer using SfPdfViewer
return SfPdfViewer.network(
state.viewUrl.toString(),
headers: {'Authorization': 'Bearer ${state.token}'},
onDocumentLoadFailed: (details) {},
onDocumentLoaded: (PdfDocumentLoadedDetails details) {},
canShowHyperlinkDialog: false,
onHyperlinkClicked: (details) =>
_handleHyperlink(details.uri),
// PDF viewer using SfPdfViewer, wrapped in SfTheme for custom accent color
return SfTheme(
data: SfThemeData(
pdfViewerThemeData: SfPdfViewerThemeData(
backgroundColor: AppTheme.primaryBackground,
scrollHeadStyle: PdfScrollHeadStyle(
backgroundColor: AppTheme.accentColor,
),
),
),
child: SfPdfViewer.network(
state.viewUrl.toString(),
headers: {'Authorization': 'Bearer ${state.token}'},
onDocumentLoadFailed: (details) {},
onDocumentLoaded: (PdfDocumentLoadedDetails details) {},
canShowHyperlinkDialog: false,
onHyperlinkClicked: (details) =>
_handleHyperlink(details.uri),
),
);
} else if (state.caps.isImage) {
// Image viewer
@@ -787,18 +798,28 @@ class _DocumentViewerState extends State<DocumentViewer> {
}
if (state.caps.isPdf) {
// PDF viewer using SfPdfViewer
return SfPdfViewer.network(
state.viewUrl.toString(),
headers: token != null
? {'Authorization': 'Bearer $token'}
: {},
onDocumentLoadFailed: (details) {},
onDocumentLoaded: (PdfDocumentLoadedDetails details) {},
canShowHyperlinkDialog: false,
enableHyperlinkNavigation: false,
onHyperlinkClicked: (details) =>
_handleHyperlink(details.uri),
// PDF viewer using SfPdfViewer, wrapped in SfTheme for custom accent color
return SfTheme(
data: SfThemeData(
pdfViewerThemeData: SfPdfViewerThemeData(
backgroundColor: AppTheme.primaryBackground,
scrollHeadStyle: PdfScrollHeadStyle(
backgroundColor: AppTheme.accentColor,
),
),
),
child: SfPdfViewer.network(
state.viewUrl.toString(),
headers: token != null
? {'Authorization': 'Bearer $token'}
: {},
onDocumentLoadFailed: (details) {},
onDocumentLoaded: (PdfDocumentLoadedDetails details) {},
canShowHyperlinkDialog: false,
enableHyperlinkNavigation: false,
onHyperlinkClicked: (details) =>
_handleHyperlink(details.uri),
),
);
} else if (state.caps.isImage) {
// Image viewer

View File

@@ -1230,7 +1230,7 @@ packages:
source: hosted
version: "0.9.1"
syncfusion_flutter_core:
dependency: transitive
dependency: "direct main"
description:
name: syncfusion_flutter_core
sha256: e1fdfcc3ed7e1f040ba95838780b2eb1857e3e5eccb817fbe94ea2b09c35eac4

View File

@@ -62,6 +62,7 @@ dependencies:
# Video Playback
video_player: ^2.8.2
syncfusion_flutter_core: ^31.2.18
dev_dependencies:
flutter_test: