如何将来自快照的数据转换为列表以适合此列?

时间:2020-07-15 15:16:04

标签: firebase flutter dart google-cloud-firestore

我的这段代码向我显示了querysnapshot不是列表的子类型的错误。您可以编辑我的代码并告诉我如何消除此错误吗?

buildProfilePosts() {
    if (_isLoading) {
      return Center(
        child: Text(
          "Loading...",
          style: TextStyle(fontFamily: "QuickSand"),
        ),
      );
    }
    return StreamBuilder(
      stream: postsRef.document(widget.profileId).collection('userPosts').orderBy('timestamp', descending: true).snapshots(),
      builder: (context, snapshot) {
        return Column(
          children: snapshot.data,
        );
      }
    );
  }

2 个答案:

答案 0 :(得分:1)

children是窗口小部件Column内的属性,它包含窗口小部件列表。您应该执行以下操作:

child: Column(children: <Widget>[
          StreamBuilder(
            stream: postsRef.document(widget.profileId).collection('userPosts').orderBy('timestamp', descending: true).snapshots(),,
            builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
              if (snapshot.connectionState == ConnectionState.done) {
                return ListView.builder(
                    shrinkWrap: true,
                    itemCount: snapshot.data.documents.length,
                    itemBuilder: (BuildContext context, int index) {
                      return ListTile(
                        contentPadding: EdgeInsets.all(8.0),
                        title:
                            Text(snapshot.data.documents[index].data["name"]),
                      );
                    });
              } else if (snapshot.connectionState == ConnectionState.none) {
                return Text("No data");
              }
              return CircularProgressIndicator();
            },
          ),
          ]),

假设您的文档中有一个name字段。

答案 1 :(得分:0)

尝试

  Column(
          children: <Widget>[
            ...List.generate(
              snapshot.data.length,
                  (index) {
                return Container(
                  child: Text(snapshot.data[index].yourobject),
                );
              },
            ),
          ],
        ),