【问题标题】:Flutter Firebase Storage Futures issueFlutter Firebase 存储期货问题
【发布时间】:2020-10-13 13:11:33
【问题描述】:

我在下面的函数中遇到了一些问题。该函数正在处理来自 Firebase 存储的异步获取。我正在使用它来获取我存储在那里的文件的名称和 url。 问题在于获取网址。具体就行了:

String url = element.getDownloadURL().toString();

getDownloadedURL() 是 Firebase 的未来。我试图等待它,但它不会识别等待,我猜是由于“元素”。 总体效果是,当我通过 Future 构建器在我的 UI 中使用它时,名称显示得很好,但 Url 没有。正在检索它,因为打印语句显示它。但它没有被等待,所以 UI 已经更新。 尝试了很多东西,但还没有找到解决方案,所以任何帮助将不胜感激。

Future<void> getImageData() async {
final imagesFromStorage = await fb
    .storage()
    .refFromURL('gs://little-big-deals.appspot.com')
    .child('images')
    .listAll();

imagesFromStorage.items.forEach((element) {
  print(element.name);
  String url = element.getDownloadURL().toString();
  print(url.toString());
  imageData.add(ImageData(element.name, url.toString()));
});

}

非常感谢

【问题讨论】:

    标签: flutter dart flutter-web


    【解决方案1】:

    你不能在 forEach 中使用异步。

    只需使用 for 循环:

    Future<void> getImageData() async {
      final imagesFromStorage = await fb
          .storage()
          .refFromURL('gs://little-big-deals.appspot.com')
          .child('images')
          .listAll();
    
      for (var element in imagesFromStorage.items) {
        print(element.name);
        String url = (await element.getDownloadURL()).toString();
        print(url.toString());
        imageData.add(ImageData(element.name, url.toString()));
      }
    }
    

    【讨论】:

    • 我很高兴,我曾经在这个上花了很多时间所以......我知道这种感觉;)
    猜你喜欢
    • 2021-04-27
    • 2018-11-27
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2019-07-22
    • 1970-01-01
    • 2017-11-21
    相关资源
    最近更新 更多