saveAs function
Future<String?>
saveAs(
- UStorageBackend backend,
- String sourcePath,
- String fileName, {
- String? mimeType,
Implementation
Future<String?> saveAs(UStorageBackend backend, String sourcePath, String fileName, {String? mimeType}) async {
if (!web.window.has("showSaveFilePicker")) return publishToDownloads(backend, sourcePath, fileName, mimeType: mimeType);
try {
final JSObject options = JSObject()..["suggestedName"] = fileName.toJS;
final JSObject handle = await web.window.callMethod<JSPromise<JSObject>>("showSaveFilePicker".toJS, options).toDart;
final JSObject writable = await handle.callMethod<JSPromise<JSObject>>("createWritable".toJS).toDart;
await for (final Uint8List chunk in backend.read(sourcePath)) {
await writable.callMethod<JSPromise<JSAny?>>("write".toJS, chunk.toJS).toDart;
}
await writable.callMethod<JSPromise<JSAny?>>("close".toJS).toDart;
await backend.delete(sourcePath);
return fileName;
} catch (_) {
// AbortError: the user dismissed the picker.
return null;
}
}