mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-06-10 15:59:25 +08:00
Impl saveFile for web
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
import 'dart:async';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import '../utils.dart';
|
||||
import 'save_file.dart';
|
||||
|
||||
final Logger _log = Logger("platformPath");
|
||||
|
||||
@@ -31,6 +33,9 @@ class Path {
|
||||
Future<void> saveFile(
|
||||
String filenameWithoutExtension, String mimeType, Uint8List bytes,
|
||||
{String dir = ""}) async {
|
||||
if (kIsWeb) {
|
||||
return saveFileWeb(bytes, mimeType, filenameWithoutExtension);
|
||||
}
|
||||
return _safChannel.invokeMethod(
|
||||
"saveFile", [filenameWithoutExtension, dir, mimeType, bytes]);
|
||||
}
|
||||
|
||||
1
lib/platform/save_file.dart
Normal file
1
lib/platform/save_file.dart
Normal file
@@ -0,0 +1 @@
|
||||
export 'save_file_none.dart' if (dart.library.html) 'save_file_web.dart';
|
||||
6
lib/platform/save_file_none.dart
Normal file
6
lib/platform/save_file_none.dart
Normal file
@@ -0,0 +1,6 @@
|
||||
import 'dart:typed_data';
|
||||
|
||||
void saveFileWeb(
|
||||
Uint8List data, String mimeType, String filenameWithoutExtension) {
|
||||
throw UnimplementedError();
|
||||
}
|
||||
28
lib/platform/save_file_web.dart
Normal file
28
lib/platform/save_file_web.dart
Normal file
@@ -0,0 +1,28 @@
|
||||
// ignore: avoid_web_libraries_in_flutter
|
||||
import 'dart:html';
|
||||
import 'dart:typed_data';
|
||||
|
||||
void saveFileWeb(
|
||||
Uint8List data, String mimeType, String filenameWithoutExtension) {
|
||||
final blob = Blob([data], mimeType);
|
||||
final url = Url.createObjectUrlFromBlob(blob);
|
||||
final a = document.createElement("a") as AnchorElement;
|
||||
a.href = url;
|
||||
var ext = "";
|
||||
switch (mimeType) {
|
||||
case "image/jpeg":
|
||||
ext = ".jpg";
|
||||
break;
|
||||
case "image/png":
|
||||
ext = ".png";
|
||||
break;
|
||||
case "image/gif":
|
||||
ext = ".gif";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
a.download = "$filenameWithoutExtension$ext";
|
||||
a.click();
|
||||
Url.revokeObjectUrl(url);
|
||||
}
|
||||
Reference in New Issue
Block a user