使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表
Posted
技术标签:
【中文标题】使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表【英文标题】:use StreamBuilder to fetch Firestore document which contains list of map in flutter 【发布时间】:2020-10-20 20:49:25 【问题描述】:我想从我的 Firestore 集合中读取具有以下格式的数据
这是下面的课程。不知道如何使用 streamBuilder 来阅读文档。我还想要一种情况,我可以将选定的订单传递到下一页。提前致谢。
class OrderModel2
final String uid;
final int subTotal;
final String address;
final String address2;
final String zipCode;
final String phoneNumber;
final dynamic timeCreated;
final String status;
final List<OrdersList> orders;
OrderModel2(
this.timeCreated,
this.status,
this.subTotal,
this.phoneNumber,
this.zipCode,
this.uid,
this.address2,
this.orders,
this.address);
OrderModel2.fromMap(Map<String, dynamic> data, String uid)
: subTotal = data['subTotal'],
address = data['address'],
zipCode = data['zipCode'],
phoneNumber = data['phoneNumber'],
address2 = data['address2'],
timeCreated = data['timeCreated'],
status = data['status'],
orders = data['orders'],
uid = uid;
class OrdersList
final String productName;
final String selected;
final String image;
final int price;
final String category;
OrdersList(
this.productName, this.selected, this.image, this.price, this.category);
OrdersList.fromMap(Map<dynamic, dynamic> data)
: productName = data['productName'],
selected = data['selected'],
image = data['image1'],
price = data['newPrice'],
category = data['category'];
【问题讨论】:
你能把你目前写的StreamBuilder
贴出来吗?
StreamBuilder>( 流:userRef.collection('Orders').snapshots().map( (snapshot) => snapshot.documents .map((doc) => OrderModel2 .fromMap(doc.data, doc.documentID)) .toList()),
【参考方案1】:
这是您使用 SteamBuilder 访问订单集合中文档的方式。
StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('Orders').snapshots(),
builder: (
BuildContext context,
AsyncSnapshot<QuerySnapshot> snapshot,
)
if (!snapshot.hasData) return new Text('Loading...');
body: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection("products").snapshots(),
builder: (context, snapshot)
return !snapshot.hasData
? Center(child: CircularProgressIndicator())
: ListView.builder(
itemCount: snapshot.data.documents.length,
itemBuilder: (context, index)
DocumentSnapshot data = snapshot.data.documents[index];
return YourObject(
documentSnapshot: data,
paramI: data.documentID,
paramField: data['field'],
);
,
);
一定要阅读这篇文章以全面了解正在发生的事情! https://medium.com/flutterdevs/using-firebase-firestore-in-flutter-b0ea2c62bc7
这里还有一个关于添加搜索字段的 ***! Adding SearchField to StreamBuilder Reading from Firestore
【讨论】:
你能提供使用listview builder的完整代码吗? 这是您要找的吗? 很高兴能帮上忙!以上是关于使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表的主要内容,如果未能解决你的问题,请参考以下文章
使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表
如何在 Flutter 中使用 Firestone 的 streambuilder 获取嵌套文档?
Streambuilder 是从 Firestore 文档中获取所有数据还是仅获取需要的字段?
在显示之前对从 StreamBuilder 获取的数据执行异步操作