Future<void> downloadFiles(url) async {
var result = await getDirectories(url); //this function just returns the path in firestore storage
Directory appDocDir = await getApplicationDocumentsDirectory();
result.items.forEach((firebase_storage.Reference ref) async {
File downloadToFile = File('${appDocDir.path}/notes/${ref.name}');
try {
await firebase_storage.FirebaseStorage.instance
.ref(ref.fullPath)
.writeToFile(downloadToFile);
} on firebase_core.FirebaseException catch (e) {
print(e);
}
});
}
我在flutter中创建了这个函数,以循环浏览我的firebase云存储中的文件。我尝试过用一个文件写入本地存储,它是有效的,但是当我循环浏览文件列表以在本地存储上写入时,它不起作用,甚至不会产生错误,代码只是在"处停止;foreach";它甚至不执行try-catch块。flutter中是否有将多个文件写入本地存储的特定功能?
因为您使用的是forEach
循环,所以您必须对代码使用for
循环,如下所示,它将起作用。
异步方法在forEach
环路内不工作
Future<void> downloadFiles(url) async {
var result = await getDirectories(url); //this function just returns the path in firestore storage
Directory appDocDir = await getApplicationDocumentsDirectory();
for(int i = 0; i<result.items.length ; i++){
File downloadToFile = File('${appDocDir.path}/notes/${result.item[i].name}');
try {
await firebase_storage.FirebaseStorage.instance
.ref(ref.fullPath)
.writeToFile(downloadToFile);
} on firebase_core.FirebaseException catch (e) {
print(e);
}
}
}