【发布时间】:2019-05-08 12:51:40
【问题描述】:
我希望能够从 firestore 数据库中文档内的数组创建一个列表。
我的数据库是这样的:
我希望能够从 videosUrl 数组中的 url 创建一个 streamBuilder 网格。
我尝试了很多东西,但我想最好的方法是这样的:
StreamBuilder <List<DocumentSnapshot>>(
stream: Firestore.instance
.collection('events')
.document('-LeH4rspnPTpeTLdt8hs')
.collection('participants')
.document('-LeL_TSfFDfqKgm-Io9T')
.snapshots().asyncMap((snap) async {
List<String> videosUrlArray = snap.data['videosUrl'];
var videoUrlList = <DocumentSnapshot>[];
for (var videoUrlPath in videosUrlArray) {
videoUrlList.add(await Firestore.instance.document(videoUrlPath).get());
}
print(videoUrlList);
return videoUrlList;
}),
builder: (BuildContext context, AsyncSnapshot<List<DocumentSnapshot>> snapshot) {
if (snapshot.hasError)
return new Text('Error: ${snapshot.error}');
switch (snapshot.connectionState) {
case ConnectionState.waiting: return _showLoading();
default:
return new GridView(
reverse: false,
gridDelegate: new SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: 2),
children: snapshot.data.map((DocumentSnapshot document) {
return Text('${snapshot.data}');
}).toList(),
);
}
},
)
但我仍然无法访问数据!
【问题讨论】:
-
没有显示列表会发生什么?您的构建器方法是否被调用?我发现调试时在构建器的第一行添加
print(snapshot)很有用。 -
在控制台中我没有收到任何错误,而是在模拟器上收到
Error type List<dynamic> is not a subtype od type List<String> -
听起来你需要在
List<String> videosUrlArray = snap.data['videosUrl']这一行添加演员表 -
你有什么想法吗?我以某种方式尝试过,但我想我做错了什么
标签: arrays flutter stream builder