Flutter : getDownloadUrl (firebase 存储)

Posted

技术标签:

【中文标题】Flutter : getDownloadUrl (firebase 存储)【英文标题】:Flutter : getDownloadUrl (firebase storage) 【发布时间】:2021-04-06 06:12:30 【问题描述】:

我的颤振应用程序有问题。我想将图像上传到 Firebase 存储并获取 URL,但 getDownloadUrl 方法不起作用。 这是我的代码:

import 'package:firebase_storage/firebase_storage.dart' as firebase_storage;

...

Future<String> addImage(File file, firebase_storage.Reference reference) async
  firebase_storage.UploadTask task = reference.putFile(file);
  firebase_storage.TaskSnapshot snapshot = task.snapshot;
  String urlString = await snapshot.ref.getDownloadURL();
  return urlString;

我想是因为新版本的firebase_storage(5.2.0)

【问题讨论】:

【参考方案1】:

您必须等待 firebase 存储图像,然后才能使用 await 调用 getUrl。同样,查看这个链接:https://***.com/a/52714376/5408464

   Future<String> addImage(File file, firebase_storage.Reference reference) async
  final task = await reference.putFile(file);
  final urlString = await (await task.onComplete).ref.getDownloadURL().toString();
  return urlString;

【讨论】:

感谢您的回答,但新的 firebase_storage 版本不再提供 onComplete 方法。怎么换? @killian 你是什么意思? 不能将 onComplete 与“task”一起使用(因为 5.2.0 版本的 firebase_storage 不再提供它)。那么还有其他方法可以等待firebase存储图像吗?没有“onComplete” Dart 分析:getter 'onComplete 没有为类型 'UploadTask' 定义。 @killian 您不需要使用 onComplete,只需使用 await 即可。检查我们的这个链接:***.com/a/52714376/5408464。顺便说一句,有人因为他们不知道的事情而对我投了反对票,这有点可悲;(【参考方案2】:

我们需要等待UploadTask完成,根据下面的源代码:

Future<String> addImage(File file, firebase_storage.Reference reference) async
  firebase_storage.UploadTask task = reference.putFile(file);
  String urlString = await (await task.whenComplete).ref.getDownloadURL().toString();
  await task.whenComplete(() async 
      urlString = await task.ref.getDownloadURL();
  ).catchError((onError) 
    print(onError);
  );
  return urlString;

【讨论】:

感谢您的回答,但新的 firebase_storage 版本不再提供 onComplete 方法。怎么换? 我们可以使用whenComplete() 回调。我已经更新了答案 不会工作,ref,getter 'ref' 没有为类型 'Future Function(FutureOr Function())' 定义。

以上是关于Flutter : getDownloadUrl (firebase 存储)的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Firebase 存储期货问题

Firebase Storage Flutter 显示图像加载时间过长

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?

如何在最新版本中使用 getdownloadurl?