【问题标题】:How to handle if else in Dart Future在 Dart Future 中如何处理 if else
【发布时间】:2014-06-24 19:43:19
【问题描述】:

我需要获取 Google Drive 一个文件夹的 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 没有,函数会因为没有返回而出错。

怎么做?

提前致谢。

【问题讨论】:

    标签: dart google-drive-api


    【解决方案1】:

    您需要从您在第 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,因此您将始终在 then() 方法中处理一个值,而不是 Future 的实例。

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 1970-01-01
      • 2021-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 2015-07-03
      • 2016-01-20
      • 1970-01-01
      相关资源
      最近更新 更多