【发布时间】:2020-10-24 21:45:23
【问题描述】:
我在网上看到了一些关于能够做到这一点的人写的文章,但他们只告诉你如何使用一个特定的、受控的图像列表来做到这一点,他们也事先知道所有的文件名。
这里还发布了这个“答案”:Flutter - Get all images from firebase storage 它实际上并没有解决这个问题,因为它建议了推荐插件的 .listAll() 方法,但没有像 .listAll() 这样的方法使用建议的插件。
我需要能够不知道 Firebase 存储中有多少图像,或者它们可能被称为什么,只是为了返回存储在那里的所有内容。
更新:
因此,由于 Firebase 存在很多限制,以至于它根本不适合作为数据库,看来我们可能不得不将图像保存在 Firebase 存储中,并将这些图像的参考列表保存在 Firebase 实时数据库文档中。
但是,我一直坚持执行此操作,因为我什至不确定首先如何最好地执行此操作。我正在尝试做的是将所有存储图像 URL 存储在一个数组中(如果这不是最好的方法,请告诉我!):
Firebase Structure
collection -> document -> fields
userData profileImages URLs (array)
我的第一个问题是我不知道如何将新数据附加到现有数组中,似乎每次添加新项目时都会覆盖它,因此我在数据库中的数组中只有一个字符串:
Firestore.instance.collection('userData').document('profileImages').updateData({
'URLs': _uploadedFileURL,
});
然后在此之后,我也不确定以后需要时如何实际检索完整的数据数组:
Container(
child: StreamBuilder(
stream: Firestore.instance.collection('userData').document('profileImages').snapshots(),
builder: (BuildContext context, AsyncSnapshot<DocumentSnapshot> snapshot) {
if (!snapshot.hasData) {
return LoadingAnimationBasic();
}
if (snapshot.data.data == null) {
return LoadingAnimationBasic();
} else {
return ListView(
shrinkWrap: true,
children: _buildProfileGallery(snapshot),
);
}
},
),
),
然后是函数:
_buildProfileGallery(AsyncSnapshot<DocumentSnapshot> snapshot) {
int test = snapshot.data["URLs"].length;
print('URLs in List: ' + test.toString());
return snapshot.data.data.map(???);
}
我不知道该放什么作为这张地图的参数,因为提示文本太疯狂了:
MapEntry(K2, V2> f(String key, V value)
我什至无法猜测这意味着什么。
我在正确的轨道上吗?我在正确的星球上吗?
【问题讨论】:
标签: firebase flutter firebase-storage