import 'dart:typed_data'; import 'dart:ui' as ui; import 'package:flutter/material.dart'; // ignore: avoid_web_libraries_in_flutter import 'dart:html' as html; Future platformViewPdf(BuildContext context, Uint8List bytes, {required String filename}) async { final blob = html.Blob([bytes], 'application/pdf'); final url = html.Url.createObjectUrlFromBlob(blob); final viewType = 'pdf-view-${DateTime.now().microsecondsSinceEpoch}'; final iframe = html.IFrameElement() ..src = url ..style.border = '0' ..style.width = '100%' ..style.height = '100%'; // ignore: undefined_prefixed_name ui.platformViewRegistry.registerViewFactory(viewType, (int _) => iframe); await showDialog( context: context, builder: (ctx) => Dialog( insetPadding: const EdgeInsets.all(16), child: SizedBox( width: 1000, height: 700, child: Stack(children: [ HtmlElementView(viewType: viewType), Positioned( right: 8, top: 8, child: IconButton( tooltip: 'In neuem Tab öffnen', icon: const Icon(Icons.open_in_new), onPressed: () => html.window.open(url, '_blank'), ), ), ]), ), ), ); html.Url.revokeObjectUrl(url); } Future platformDownloadPdf(Uint8List bytes, {required String filename}) async { final blob = html.Blob([bytes], 'application/pdf'); final url = html.Url.createObjectUrlFromBlob(blob); final a = html.AnchorElement(href: url)..download = filename; a.click(); html.Url.revokeObjectUrl(url); }