Merge remote-tracking branch 'origin/master'

This commit is contained in:
13574
2023-09-09 23:35:42 +08:00
16 changed files with 191 additions and 21 deletions

View File

@@ -1,13 +1,15 @@
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");
class Path {
static const platform = MethodChannel("lifegpc.eh_downloader_flutter/path");
static const _safChannel=MethodChannel("lifegpc.eh_downloader_flutter/saf");
static const _safChannel = MethodChannel("lifegpc.eh_downloader_flutter/saf");
String? _currentExe;
bool _currentExeLoaded = false;
@@ -28,7 +30,13 @@ class Path {
}
/// 保存文件
static Future<void> saveFile(String filenameWithoutExtension,String mimeType,Uint8List bytes,{String dir=""}) async{
return _safChannel.invokeMethod("saveFile",[filenameWithoutExtension,dir,mimeType,bytes]);
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]);
}
}

View File

@@ -0,0 +1 @@
export 'save_file_none.dart' if (dart.library.html) 'save_file_web.dart';

View File

@@ -0,0 +1,6 @@
import 'dart:typed_data';
void saveFileWeb(
Uint8List data, String mimeType, String filenameWithoutExtension) {
throw UnimplementedError();
}

View 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);
}