mirror of
https://github.com/lifegpc/eh_downloader_flutter.git
synced 2026-07-08 01:30:28 +08:00
Impl saveFile for web
This commit is contained in:
@@ -1,7 +1,9 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import '../utils.dart';
|
import '../utils.dart';
|
||||||
|
import 'save_file.dart';
|
||||||
|
|
||||||
final Logger _log = Logger("platformPath");
|
final Logger _log = Logger("platformPath");
|
||||||
|
|
||||||
@@ -31,6 +33,9 @@ class Path {
|
|||||||
Future<void> saveFile(
|
Future<void> saveFile(
|
||||||
String filenameWithoutExtension, String mimeType, Uint8List bytes,
|
String filenameWithoutExtension, String mimeType, Uint8List bytes,
|
||||||
{String dir = ""}) async {
|
{String dir = ""}) async {
|
||||||
|
if (kIsWeb) {
|
||||||
|
return saveFileWeb(bytes, mimeType, filenameWithoutExtension);
|
||||||
|
}
|
||||||
return _safChannel.invokeMethod(
|
return _safChannel.invokeMethod(
|
||||||
"saveFile", [filenameWithoutExtension, dir, mimeType, bytes]);
|
"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