【发布时间】:2020-05-28 15:14:29
【问题描述】:
我正在尝试创建一个未经身份验证的用户图标“选择收藏夹”选项,如果单击一个图标(在 Firestore 数据(书名)的 ListView 中的标题列表上),它会保存要路由到的数据一个新的收藏页面。我在 Firestore 文档中找不到有关如何执行此操作的信息,但我找到了一个 youtube 教程,该教程为流行的颤振 WordPair 应用程序执行此操作。这是用于存储他们的 WordPair 数据的字符串:
final _randomWordPairs = <WordPair>[];
另一个用于检查 WordPair 列表是否已保存的变量是:
final _savedWordPairs = Set<WordPair>[];
如果我的 Firebase 数据字符串是
Firestore.instance.collection("titles").snapshots()
什么是上述 WordPair 变量的等价物,所以我可以用我的标题列表创建这个收藏夹列表
snapshot.data.documents[index]['title']
没有任何作用。仍在试图弄清楚:变量:
final savedDb = Firestore.instance.collection("books").document('title');
final alreadySaved = Firestore.instance.collection("books").document('title');
调用它的ListTile代码:
trailing: Icon( alreadySaved ? Icons.favorite :
Icons.favorite_border,
color: alreadySaved ? Colors.red : null),
onTap: () {
setState(() {
if(alreadySaved) {
savedDb.remove('title');
}else{
savedDb.add('title');
}
});
}
我试过了,但现在它只是让那个页面崩溃;
final alreadySaved = Firestore.instance.collection("books").where((item) => item.contains("title"));
List<String> savedDb = ['Firestore.instance.collection("books").document(title)'];
trailing: Icon( alreadySaved == null ? Icons.favorite :
Icons.favorite_border,
color: alreadySaved != null ? Colors.red : null),
onTap: () {
setState(() {
savedDb.add('title');
});
},
最后一次尝试:
bool alreadySaved = false;
savedDb() async{
DocumentSnapshot ds = await
Firestore.instance.collection("books").document('title').get();
this.setState(() {
alreadySaved = ds.exists;
});
}
@override
void initState() {
super.initState();
savedDb();
}
onTap 说 .remove 和 .add 没有为 Function 类型定义,我的图标甚至不会改变颜色。这是不可能的
onTap: () {
setState(() {
if(alreadySaved) {
savedDb.remove('Firestore.instance.collection("books")');
}else{
savedDb.add(Firestore.instance.collection("books"));
}
});
},
返回 .remove 和 .add 没有为 Function 类型定义
【问题讨论】:
-
您能否添加更多有关它的内容,因为很难理解您的问题,我不知道您想要实现什么。可以分享一下教程的链接吗? “等价”是什么意思?
-
是的,在 youtube.com/… 的颤振教程中,在 44:40 时,他展示了他如何使用心形图标编写一个“收藏夹”列表,用户可以在其中单击心形图标,然后它会将 listtile 保存到新的页面路由。我一直在尝试向我的项目添加一个类似的“收藏夹列表”,但无法弄清楚如何使用我的 Firestore 数据来执行此操作。
标签: firebase flutter dart google-cloud-firestore staggered-gridview