我正在开发一个卖家可以添加itens(iPhone,冰柜等)的应用,用户应该可以查询iten。我不喜欢某种组织方式-我尝试创建子集合(卖方-> docId->项目-> ID->项目)并通过数组(卖方-> docId->(..){itens})进行创建, main image
嗯,我确实知道如何与Streambuilder一起显示和类似的东西。我的代码的一部分非常像这样:
StreamBuilder(
stream:
Firestore.instance.collection('vendedores')
.where(['item'],
isEqualTo: widget.busca,
).
snapshots(),
//Firestore.instance.collection("vendedores").snapshots(),
builder: (context, snapshot) {
switch (snapshot.connectionState) {
case ConnectionState.none:
case ConnectionState.waiting:
return Center(
child: CircularProgressIndicator(),
);
default:
return
Expanded(child:
ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index) => showCard(
context, snapshot.data.documents[index])));
}
}
),
编辑:我希望能够找到属于卖家的商品(iPhone,冰柜),因此它应该在我的卡(showCard)上显示卖家的姓名。因此,如果有5个人销售相同的商品(例如:主席),则当用户搜索“椅子”时,这5个卖家都将出现在ListView中。
我的小部件showCard已经可以工作-尽管目前仅作为草稿-基本上是:
Widget showCard(context, DocumentSnapshot document) {
return Card(
elevation: 8,
child: InkWell(
splashColor: Colors.orange.withAlpha(30),
onTap: () {},
child: Container(
color: Color(0xffDFE0DF).withOpacity(0.7),
width: 500,
height: 120,
child: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.only(top: 5, right: 5),
child: Text(
document['nomeLoja'],
style: TextStyle(fontSize: 20),
)),
],
)),
),
);
}
** nomeLoja是卖方的名称。
提前感谢!
如果您将数据库结构更改为以下形式:
products: {
100: {
name: 'chair',
vendor: {
name: 'vendor 1'
}
},
101: {
name: 'chair',
vendor: {
name: 'vendor 2'
}
},
102: {
name: 'table',
vendor: {
name: 'vendor 1'
}
}
}
您可以在此行中查询所需的数据:
final documents = await Firestore.instance.collection('products').where('name', isEqualTo: 'chair').getDocuments();
通过这种方式,您可以获得所需供应商的信息,并可以在列表中设置名称。例如:
for(final vendorDocument in documents) {
final vendor = Vendor.fromData(vendorDocument.data);
//do what you want with the vendor...
}