fix
This commit is contained in:
+42
-7
@@ -4,6 +4,7 @@ import 'package:archive/archive_io.dart';
|
||||
import 'package:cloud_archiver/config.dart';
|
||||
import 'package:cloud_archiver/state.dart';
|
||||
import 'package:filesize/filesize.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:path/path.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:webdav_client/webdav_client.dart' as dav;
|
||||
@@ -109,7 +110,7 @@ void loadCloudArchives() async {
|
||||
davStatus.value = DavStatus.connected;
|
||||
}
|
||||
|
||||
Future<void> upload(SyncItemConfig item, bool needCreateDir) async {
|
||||
Future<void> upload(BuildContext context, SyncItemConfig item, bool needCreateDir) async {
|
||||
if (needCreateDir) {
|
||||
await _client.mkdir(item.name);
|
||||
}
|
||||
@@ -122,26 +123,52 @@ Future<void> upload(SyncItemConfig item, bool needCreateDir) async {
|
||||
var zipTempFilePath = join(cacheDir.path, zipFileName);
|
||||
zipFileEncoder.create(zipTempFilePath);
|
||||
if (file.statSync().type == FileSystemEntityType.directory) {
|
||||
await zipFileEncoder.addDirectory(Directory(item.path));
|
||||
var directory = Directory(item.path);
|
||||
for (var file in directory.listSync()) {
|
||||
print('Add file: ${file.path}');
|
||||
}
|
||||
await zipFileEncoder.addDirectory(
|
||||
directory,
|
||||
onProgress: (progress) {
|
||||
print('Zip progress: $progress');
|
||||
},
|
||||
);
|
||||
} else {
|
||||
await zipFileEncoder.addFile(file);
|
||||
}
|
||||
|
||||
await zipFileEncoder.close();
|
||||
|
||||
await _client.writeFromFile(zipTempFilePath, join(item.name, zipFileName));
|
||||
|
||||
File(zipTempFilePath).delete();
|
||||
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text('上传完成'),
|
||||
),
|
||||
);
|
||||
}
|
||||
loadCloudArchives();
|
||||
}
|
||||
|
||||
Future<void> download(SyncItemConfig item, dav.File cloudArchive) async {
|
||||
Future<void> download(BuildContext context, SyncItemConfig item, dav.File cloudArchive) async {
|
||||
print('Start download: ${cloudArchive.path}');
|
||||
var cacheDir = await getApplicationCacheDirectory();
|
||||
var zipPath = join(cacheDir.path, '${item.name}_${cloudArchive.name}');
|
||||
await _client.read2File(cloudArchive.path!, zipPath);
|
||||
await extractFileToDisk(zipPath, cacheDir.path);
|
||||
await _client.read2File(
|
||||
cloudArchive.path!,
|
||||
zipPath,
|
||||
onProgress: (count, total) {
|
||||
print('Downloaded: $count/$total');
|
||||
},
|
||||
);
|
||||
await extractFileToDisk(
|
||||
zipPath,
|
||||
cacheDir.path,
|
||||
callback: (entry) {
|
||||
print('Unzip: ${entry.name}');
|
||||
},
|
||||
);
|
||||
File(zipPath).delete();
|
||||
|
||||
var temp = File(join(cacheDir.path, basename(item.path)));
|
||||
@@ -165,6 +192,14 @@ Future<void> download(SyncItemConfig item, dav.File cloudArchive) async {
|
||||
default:
|
||||
print('Failed: $fileSystemEntityType');
|
||||
}
|
||||
|
||||
if (context.mounted) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(
|
||||
content: Text('下载完成'),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
extension DateTimeExt on DateTime {
|
||||
|
||||
Reference in New Issue
Block a user