从Flatter中的FirebaseStorage URI获取URL

从Flatter中的FirebaseStorage URI获取URL,firebase,flutter,firebase-storage,flutter-web,Firebase,Flutter,Firebase Storage,Flutter Web,对不起,我的问题是noob。但是如何从Uri获取Url字符串呢?据我所知,Url是Uri的一个子集,但我找不到任何类似.getUrl的方法。我错过什么了吗 背景: Flatter Web中FirebaseStorage的getDownloadURL()以某种方式返回Uri,而不是String 来自Flatter Web的FirebaseStorage软件包的说明: 未来的getDownloadURL()包:firebase/src/storage.dart 返回此引用的长期下载URL getDo

对不起,我的问题是noob。但是如何从Uri获取Url字符串呢?据我所知,Url是Uri的一个子集,但我找不到任何类似
.getUrl
的方法。我错过什么了吗

背景:
Flatter Web中FirebaseStorage的
getDownloadURL()
以某种方式返回
Uri
,而不是
String

来自Flatter Web的FirebaseStorage软件包的说明:

未来的getDownloadURL()包:firebase/src/storage.dart

返回此引用的长期下载URL

getDownloadURL
来自flatter应用程序的FirebaseStorage软件包的解释:

未来的getDownloadURL() 包装:firebase_storage/firebase_storage.dart

获取此对象的长期下载URL

在颤振应用程序my pubspec.yaml中:

  firebase_core: ^0.5.1
  firebase_auth: ^0.18.2
  cloud_firestore: ^0.14.2
  firebase_storage: ^5.0.0-dev.4
  firebase: ^7.3.2
  cloud_firestore: ^0.14.2
  cloud_functions: ^0.6.0+1
在颤振Web my pubspec.yaml中:

  firebase_core: ^0.5.1
  firebase_auth: ^0.18.2
  cloud_firestore: ^0.14.2
  firebase_storage: ^5.0.0-dev.4
  firebase: ^7.3.2
  cloud_firestore: ^0.14.2
  cloud_functions: ^0.6.0+1
我试图找到解决方案并阅读文档,但没有找到任何关于将Uri从Firebase存储
getDownloadURL
方法转换为Url的文章。它似乎被视为几乎一样的东西。但它给了我错误。见下面的代码:

***代码:

Future<String> uploadImage(String localFilename, String filename, String path, StorageReference ref) async {
    final byteData = await rootBundle.load('assets/posts_images/$localFilename');
    final bytes = byteData.buffer.asUint8List();

    final metadata = UploadMetadata(contentType: 'image/jpeg');
    final uploadTask = ref.child('$path/$filename').put(bytes, metadata); 
    final snapshot = await uploadTask.future;
    final url = await snapshot.ref.getDownloadURL();

    return url; // Error: A value of type 'Uri' can't be returned from method 'uploadImage' because it has a return type of 'Future<String>' 
  }
Future uploadImage(字符串localFilename、字符串filename、字符串路径、StorageReference ref)异步{
final byteData=wait rootBundle.load('assets/posts_images/$localFilename');
final bytes=byteData.buffer.asUint8List();
最终元数据=上传元数据(contentType:'image/jpeg');
最终上传任务=ref.child('$path/$filename').put(字节,元数据);
最终快照=等待上载Task.future;
最终url=等待快照。参考getDownloadURL();
返回url;//错误:无法从方法“uploadImage”返回类型为“Uri”的值,因为它的返回类型为“Future”
}

谢谢

根据文档,该类有一个方法


请编辑问题以显示未按预期方式运行的代码。感谢您的评论。我已经在上面添加了代码。这只是在颤振网。但我的问题是如何将URI转换为URL,以及如何从Flatter WebOh中的Firebase存储方法中获取URL,就这么简单。我没有意识到这一点,我认为
.toString
只会返回类似于
Uri对象的东西。没有意识到它实际上把它变成了Url。谢谢,道格。对不起,我又提了一个问题。。