import 'dart:html' as html; import 'package:http/http.dart' as http; import 'download_result.dart'; import 'file_download_common.dart'; Future downloadFileFromUrlImpl( String url, { String? fileName, Map? headers, bool openAfterDownload = false, }) async { try { final name = fileName ?? fileNameFromUrl(url); final response = await http.get(Uri.parse(url), headers: headers); if (response.statusCode != 200) { return DownloadResult.failure( 'Download failed (${response.statusCode})', ); } final blob = html.Blob([response.bodyBytes]); final objectUrl = html.Url.createObjectUrlFromBlob(blob); final anchor = html.AnchorElement(href: objectUrl) ..download = name ..style.display = 'none'; html.document.body?.append(anchor); anchor.click(); anchor.remove(); html.Url.revokeObjectUrl(objectUrl); return DownloadResult.success(message: 'E-Card downloaded'); } catch (_) { try { final name = fileName ?? fileNameFromUrl(url); final anchor = html.AnchorElement(href: url) ..download = name ..style.display = 'none'; html.document.body?.append(anchor); anchor.click(); anchor.remove(); return DownloadResult.success(message: 'E-Card download started'); } catch (e) { return DownloadResult.failure('Could not download file'); } } }