Firebase 如何使用StreamBuilder获取特定的Firestore文档

Firebase 如何使用StreamBuilder获取特定的Firestore文档,firebase,firebase-realtime-database,flutter,google-cloud-firestore,Firebase,Firebase Realtime Database,Flutter,Google Cloud Firestore,这是我当前使用的设置: class BookList extends StatelessWidget { @override Widget build(BuildContext context) { return StreamBuilder<QuerySnapshot>( stream: Firestore.instance.collection('books').snapshots(), builder: (BuildContext cont

这是我当前使用的设置:

class BookList extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return 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['title']),
                  subtitle: new Text(document['author']),
                );
              }).toList(),
            );
        }
      },
    );
  }
}
问题是我不知道如何在Streambuilder中使用该示例。当我尝试这样做时:

...

body: StreamBuilder<QuerySnapshot>(
        stream: Firestore.instance
        .collection('talks')
        .document('document-name')
        .get()
        .then((DocumentSnapshot ds) {
      // use ds as a snapshot
    }),
        builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
          if (snapshot.data == null)
            return Center(child: CircularProgressIndicator());
          if (snapshot.hasError) return new Text('Error: ${snapshot.error}');
          if (snapshot.data.documents.length == 0)
...
。。。
正文:StreamBuilder(
流:Firestore.instance
.collection(‘talks’)
.document(“document-name”)
.get()
.然后((文档快照){
//将ds用作快照
}),
生成器:(BuildContext上下文,异步快照){
如果(snapshot.data==null)
返回中心(子项:CircularProgressIndicator());
if(snapshot.hasError)返回新文本('Error:${snapshot.Error}');
if(snapshot.data.documents.length==0)
...
我得到:

无法将参数类型“Future”分配给参数类型“Stream”。dart(参数类型不可分配)


在Firestore的Flatter库中,您可以通过调用获取单个文档的流

比如:

stream: Firestore.instance.collection('books').document('document-name').snapshots(),

在Firestore的Flatter库中,您可以通过调用获取单个文档的流

比如:

stream: Firestore.instance.collection('books').document('document-name').snapshots(),

谢谢你,我可以使用你的参考资料并将我的QuerySnapshot更改为DocumentSnapshot谢谢你,我可以使用你的参考资料并将我的QuerySnapshot更改为DocumentSnapshot