gpt4 book ai didi

dart - 在 ListView.builder 中从多个来源获取数据 - Flutter

转载 作者:IT王子 更新时间:2023-10-29 07:00:20 26 4
gpt4 key购买 nike

我正在使用 ListView.builder 构造函数通过从 Firestore 检索数据来构建列表。

我有两个集合,在这两个集合下,我在不同的文档中有数据。

收集消息:

  • 消息
    • 留言1
    • 留言2

消息中的每个文档都有以下键:msgBody、sender。我将sender id存储在消息文档的sender字段中,实际上是集合Users中各个用户的文档名称。

收藏用户:

  • 用户
    • 詹姆斯
    • 格雷格

我目前正在使用以下代码读取消息集合并获取其中的文档,然后我获取发件人字段中的值并创建对相应发件人文档的文​​档引用并尝试使用用户获取发件人详细信息记录并在我的列表中使用它的数据。

child: StreamBuilder<QuerySnapshot>(
stream: Firestore.instance.collection('Messages').snapshots(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (!snapshot.hasData) return Center(child: CircularProgressIndicator());
return new ListView.builder(
itemCount: snapshot.data.documents.length,
padding: const EdgeInsets.all(6.0),
itemBuilder: (context, index) {
DocumentSnapshot ds = snapshot.data.documents[index];
DocumentReference tRef = Firestore.instance.document('/users/'+ds['sender']);
DocumentSnapshot tRefD;
tRef.get().then((tData){
print(tData.data); // I can see the sender data in the console here
tRefD = tData;
});

if (ds.data.isNotEmpty)
{
return Column(
children: <Widget>[
Text(ds['sender']),
Text(tRefD['name']), //App crashes here works when I comment this line
],
);
}
}
)

如何从不同集合下的不同文档中读取数据并在同一个ListView.builder中使用?

任何帮助将不胜感激:)

最佳答案

在获取您的用户名时,UI 已经构建完成。您要么需要嵌套 FutureBuilderStreamBuilder每个文件一个。或者让你的 async在单独的方法中调用,在您的 initState 中调用此方法并填充相应的字段,然后将它们加载到 build 内的用户界面中方法。

关于dart - 在 ListView.builder 中从多个来源获取数据 - Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52101481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com