我有2个收藏夹。 这样设置第一个收藏集。
firestore: SeriesCollection
{
seriesName: "Test Name"
seriesStartDate:
seriesImage:
}
第二收藏
firestore: SeriesAudioFiles
{
series: "Test Name"
audioFiles:
speaker:
dateOfEvent:
}
这是我的代码
ExpandableContainer(
expanded: expandFlag,
child: ListView.builder(
itemCount: snapshots.length,
itemBuilder: (context, index) {
if (snapshots[index].data["series"] ==
snapshot[widget.index].data["seriesName"]) {
return ListTile(
leading: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
snapshots[index].data["month"],
style: TextStyle(
color: Colors.black.withOpacity(.5),
fontSize: 15),
),
Text(
snapshots[index].data["day"],
style: TextStyle(
color: Colors.black.withOpacity(0.5),
fontSize: 30),
),
],
),
title: Text(snapshots[index].data["sermonTitle"]),
subtitle:
Text(snapshots[index].data["sermonReference"]),
trailing: Icon(Icons.arrow_forward_ios),
onTap: () => passData(snapshots[index]),
);
}
},
),)
我要尝试的是仅列出SeriesAudioFiles,只要它与两个集合中的系列名称都匹配。
我的Firestore数据可能设置有误,但是我对此很陌生。
我曾经尝试过IF contains,但是我似乎无法用它来填充我实际需要的数据。
当我能够获取实际起作用的数据时,它带有一个循环,可多次拉入项目。
答案 0 :(得分:1)
您可以轻松使用集合的.where()
方法。
有了它,您可以建立一个仅包含所需音频的列表:
audioListFromSerie = audioCollection.where((i) => i.series == serieList[iterationIndex].seriesName).toList();