Flutter Firestore - 查找`Document Snapshot` id

时间:2017-10-08 18:11:04

标签: firebase dart flutter google-cloud-firestore

我有简单的应用程序与产品列表。产品存储在Firebase Firestore中。我想下载产品列表,并为用户提供更新某些数据的可能性。

所以我准备了产品清单:

Widget _buildProductsList() {
  return new StreamBuilder(
    stream: Firestore.instance
        .collection('products')
        .snapshots,
    builder: (context, snapshot) {
      if (!snapshot.hasData) return new Text("Loading...");

      return new ListView(
        children: snapshot.data.documents.map((document) {
          Product product = new Product(document.data);
          _ProductCell cell = new _ProductCell();
          cell.product = product;
          return cell;
        }).toList(),
      );
    },
  );
}

我将文档快照序列化为我的Product对象:

class Product {

    static const NAME_KEY = 'name';
    static const DESC_KEY = 'desc';
    static const PHOTO_URL_KEY = 'photoUrl';
    static const AUTHOR_ID_KEY = 'authorId';
    static const CREATED_AT_KEY = 'createdAt';

    String name;
    String description;
    String photoUrl;
    String authorId;
    int createdAt;

    Product(Map<String, dynamic> json) {
        name = json[NAME_KEY];
        description = json[DESC_KEY];
        photoUrl = json[PHOTO_URL_KEY];
        authorId = json[AUTHOR_ID_KEY];
        createdAt = json[createdAt];
    }
}

现在,当用户与ProductCell进行一些交互时,我想更新Firestore中的Product Document,但是我没有ID,因此无法创建正确的Firestore引用。

如何实现这一目标?

1 个答案:

答案 0 :(得分:2)

我昨天遇到了同样的问题,我昨天提出了一个问题。您可以在此处跟踪:https://github.com/flutter/flutter/issues/12471

目前,FireStore插件还有一些问题。 您可以通过在插件上过滤来查看Firebase插件的所有问题: https://github.com/flutter/flutter/labels/plugin%3A%20firebase