isEqual to operator 在 Flutter Firestore 中无法正常工作
Posted
技术标签:
【中文标题】isEqual to operator 在 Flutter Firestore 中无法正常工作【英文标题】:isEqual to operator is not working properly in Flutter Firestore 【发布时间】:2020-09-06 00:28:38 【问题描述】:我正在尝试在 Cloud Firestore 中使用 Flutter 中的 isEqualTo
运算符在 StreamBuilder
内执行复合查询,如下所示:
Firestore.instance
.collection('produtos')
.where("NProduto", isEqualTo: productClicked)
.snapshots()
.listen((data) =>
data.documents.forEach((doc) => nomeProdutoClicked = doc["Nome"]));
但是当我尝试在最后一行使用forEach
时,它似乎永远不会添加到列表中,设置为变量或类似的东西,唯一有效的是打印(doc)
。
我已经尝试在 StreamBuilder 之外以单独的方法进行操作,但我无法使其以任何方式工作。
本质上,我要做的是从与我在 StreamBuilder 中使用的集合不同的集合中获取文档。
如果您知道另一种方法,或者知道如何解决此问题,请帮助我。我将永远感激哈哈哈哈:)
【问题讨论】:
请查看this 【参考方案1】:基本上可以加
return new ListView(children: getItems(snapshot));
然后,定义getItems
getItems(AsyncSnapshot<QuerySnapshot> snapshot)
return snapshot.data.documents
.map((doc) => new ListTile(list:list)
.toList();
它应该看起来像:
return new StreamBuilder<QuerySnapshot>(
stream:
Firestore.instance.
collection('produtos').
.where("Produto", isEqualTo: productClicked)
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot)
if (!snapshot.hasData) return new Text("There is no products");
return new ListView(children: getProductsItems(snapshot));
);
getProductsItems(AsyncSnapshot<QuerySnapshot> snapshot)
return snapshot.data.documents
.map((doc) => new ListX(title: new Text(doc["Nome"])
.toList();
【讨论】:
我认为这可能有效,但我不确定您所说的ListX
和 .toList()
部分是什么意思。你能解释一下吗?编辑:我正在尝试从列表中获取isEqualTo
,所以我必须遍历它,这就是它没有真正工作的原因。以上是关于isEqual to operator 在 Flutter Firestore 中无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
Flu epidemic in Guangdong, no need to panic, says expert
Introduction to operating systems----《Computer operating system》