From 6aa6d0e9113df31a5939c9bb19cc062256b791df Mon Sep 17 00:00:00 2001 From: Christian Pauly Date: Fri, 10 Apr 2020 18:25:47 +0200 Subject: [PATCH] Open file in web --- lib/utils/matrix_file_extension.dart | 19 ++++++++++++++++++- pubspec.lock | 4 ++-- pubspec.yaml | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/lib/utils/matrix_file_extension.dart b/lib/utils/matrix_file_extension.dart index 29927e2..78ea6e9 100644 --- a/lib/utils/matrix_file_extension.dart +++ b/lib/utils/matrix_file_extension.dart @@ -1,15 +1,32 @@ import 'dart:io'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter/foundation.dart'; import 'package:open_file/open_file.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:universal_html/prefer_universal/html.dart' as html; +import 'package:mime_type/mime_type.dart'; extension MatrixFileExtension on MatrixFile { void open() async { Directory tempDir = await getTemporaryDirectory(); final file = File(tempDir.path + "/" + path.split("/").last); file.writeAsBytesSync(bytes); - await OpenFile.open(file.path); + if (kIsWeb) { + final fileName = path.split('/').last; + final mimeType = mime(fileName); + var element = html.document.createElement('a'); + element.setAttribute( + 'href', html.Url.createObjectUrlFromBlob(html.Blob([bytes]))); + element.setAttribute('target', "new"); + element.setAttribute('type', mimeType); + element.style.display = 'none'; + html.document.body.append(element); + element.click(); + element.remove(); + } else { + await OpenFile.open(file.path); + } return; } } diff --git a/pubspec.lock b/pubspec.lock index eb76e15..ddaa982 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -348,12 +348,12 @@ packages: source: hosted version: "0.9.6+3" mime_type: - dependency: transitive + dependency: "direct main" description: name: mime_type url: "https://pub.dartlang.org" source: hosted - version: "0.2.4" + version: "0.2.7" multi_server_socket: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6a0becf..fd85e38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -52,6 +52,7 @@ dependencies: photo_view: ^0.9.2 flutter_sound: ^2.1.1 open_file: ^3.0.1 + mime_type: ^0.2.7 intl: ^0.16.0 intl_translation: ^0.17.9