在streambuilder列表视图中显示文档快照的引用

时间:2019-04-19 22:14:33

标签: dart flutter google-cloud-firestore

Here's my database (screenshot)

因此,我可以使用listview以非常标准的方式向用户显示所有图书:

StreamBuilder<QuerySnapshot>(
      stream: Firestore.instance.collection('books').snapshots(),
      builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
        if (snapshot.hasError)
          return new Text('Error: ${snapshot.error}');
        switch (snapshot.connectionState) {
          case ConnectionState.waiting: return new Text('Loading...');
          default:
            return new ListView(
              children: snapshot.data.documents.map((DocumentSnapshot document) {
                return new ListTile(
                  title: new Text(document['text']),
                  subtitle: // I want to display the author's name
                );
              }).toList(),
            );
        }
      },
    );

但是问题是,document['author']是一个DocumentReference,我可以通过DocumentSnapshot ds = await documentSnapshot['author'].get()得到。但是问题是,这是我不能在ListView中使用的未来。最好的方法是什么?对每个文档快照都使用Futurebuilder?我的实际项目中的每本书也有多个文档引用

1 个答案:

答案 0 :(得分:0)

您可能想使用FutureBuilder而不是StreamBuilder。根据{{​​3}},它还会删除一些构建器标牌代码。让我知道事情如何发展。如果快照不包含任何错误,则始终可以返回ListView.builder。那是我的方法。