diff --git a/lib/src/widgets/button_file_saver.dart b/lib/src/widgets/button_file_saver.dart index 01b9446..41ea391 100644 --- a/lib/src/widgets/button_file_saver.dart +++ b/lib/src/widgets/button_file_saver.dart @@ -35,7 +35,9 @@ import 'package:flutter/foundation.dart' show kIsWeb; import 'package:flutter/material.dart'; import 'package:file_picker/file_picker.dart'; -import 'package:universal_html/html.dart' as html; +// import 'package:universal_html/html.dart' as html; +import 'package:universal_web/js_interop.dart'; +import 'package:universal_web/web.dart' as web; /// JSON encoder with indentation for pretty printing. @@ -83,14 +85,30 @@ Future downloadDataForWeb( filename = '$filename.json'; } final bytes = utf8.encode(jsonContent); - final blob = html.Blob([bytes], 'application/json'); - final url = html.Url.createObjectUrlFromBlob(blob); + // final blob = html.Blob([bytes], 'application/json'); + // final url = html.Url.createObjectUrlFromBlob(blob); - html.AnchorElement(href: url) - ..setAttribute('download', filename) - ..click(); + // html.AnchorElement(href: url) + // ..setAttribute('download', filename) + // ..click(); - html.Url.revokeObjectUrl(url); + // html.Url.revokeObjectUrl(url); + + final blob = web.Blob( + [bytes.buffer.toJS].toJS, + web.BlobPropertyBag(type: 'application/json'), + ); + final url = web.URL.createObjectURL(blob); + + final anchor = web.HTMLAnchorElement() + ..href = url + ..download = filename; + + web.document.body?.append(anchor); + anchor.click(); + anchor.remove(); + + web.URL.revokeObjectURL(url); messenger.showSnackBar( SnackBar(content: Text('Data downloaded as $filename')), diff --git a/pubspec.yaml b/pubspec.yaml index 53e5fc8..89751ff 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -26,9 +26,10 @@ dependencies: media_kit_libs_video: ^1.0.7 media_kit_video: ^2.0.1 path: ^1.9.1 - universal_html: ^2.3.0 - url_launcher: ^6.3.2 path_provider: ^2.1.5 + # universal_html: ^2.3.0 + universal_web: ^1.1.1+1 + url_launcher: ^6.3.2 dev_dependencies: custom_lint: ^0.8.1