我需要让Google云端硬盘成为文件夹的fileId。如果该文件夹不存在,我需要创建一个具有该名称的文件夹并返回fileId。使用fileId,我需要做其他工作。
Dart中的Google Drive API对我来说没问题,我可以使用Dart创建一个文件夹。问题是关于未来。 代码如下:
drive.files.list(q:"title='TEST'").then((result){
if(result.items.length == 0) {
driveclient.File file = new driveclient.File.fromJson({"title":"TEST", "mimeType": "application/vnd.google-apps.folder"});
drive.files.insert(file).then((result2) {
return result2.id;
});
} else {
return result.items[0].id;
}
});
当TEST存在时,返回id。但是如果TEST没有,那么函数错误就是因为没有返回。
怎么做?
提前致谢。
答案 0 :(得分:3)
您需要从第4行调用的then方法返回未来:
drive.files.list(q:"title='TEST'").then((result){
if(result.items.length == 0) {
driveclient.File file = new driveclient.File.fromJson({"title":"TEST", "mimeType": "application/vnd.google-apps.folder"});
return drive.files.insert(file).then((result2) {
return result2.id;
});
} else {
return result.items[0].id;
}
});
then()返回一个新的未来,它将从您作为参数提供给方法的方法返回的值完成。那么()也足够智能来解决所有嵌套的未来,所以你总是在then()方法中处理一个值,而不是Future的实例。