【问题标题】:use StreamBuilder to fetch Firestore document which contains list of map in flutter使用 StreamBuilder 获取 Firestore 文档,其中包含颤动中的地图列表
【发布时间】: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()),

标签: flutter dart google-cloud-firestore


【解决方案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

这里还有一个关于添加搜索字段的 StackOverflow! Adding SearchField to StreamBuilder Reading from Firestore

【讨论】:

  • 你能提供使用listview builder的完整代码吗?
  • 这是您要找的吗?
  • 很高兴能帮上忙!
猜你喜欢
  • 2023-01-01
  • 1970-01-01
  • 2020-03-30
  • 2020-02-16
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2020-03-04
  • 2021-09-30
相关资源
最近更新 更多