如何解决在地图流中等待
我有以下信息流:
Stream<List<Product>> products() {
//Get Products from Cloud Firestore
return productCollection.snapshots().map((snapshot) {
return snapshot.documents.map((document) {
//Get image metadata of each product from Firebase Storage
Future<StorageMetadata> _metadata = imageRef
.child('${document.documentID}/${document.data['mainImage']['name']}')
.getMetadata()
.catchError((onError) => print('Error: $onError'));
//After getting metadata,create product objects with data gathered above
return Product.fromEntity(ProductEntity.fromSnapshot(
document,ProductImageEntity.fromMetadata(_metadata)));
}).toList();
});
}
在从Firebase存储检索元数据之后,我需要在 之后返回产品对象。我是异步编程的新手,在不将流返回类型更改为Future的情况下遇到了麻烦。该怎么办?
解决方法
请执行以下操作:
Stream<List<Product>> products() {
//Get Products from Cloud Firestore
return productCollection.snapshots().asyncMap((snapshot) {
return Future.wait(snapshot.documents.map((document) async {
//Get image metadata of each product from Firebase Storage
StorageMetadata _metadata = await imageRef
.child(
'${document.documentID}/${document.data['mainImage']['name']}')
.getMetadata()
.catchError((onError) => print('Error: $onError'));
//After getting metadata,create product objects with data gathered above
return Product.fromEntity(ProductEntity.fromSnapshot(
document,ProductImageEntity.fromMetadata(_metadata),));
}).toList());
});
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。