【发布时间】:2020-03-22 11:30:55
【问题描述】:
我在 Flutter 中有一个使用 Firestore 的聊天应用,我有两个主要集合:
-
chats,以自动 ID 为键,具有message、timestamp和uid字段。 -
users,以uid为键,并有一个name字段
在我的应用程序中,我显示了一个消息列表(来自messages 集合),带有这个小部件:
class ChatList extends StatelessWidget {
@override
Widget build(BuildContext context) {
var messagesSnapshot = Firestore.instance.collection("chat").orderBy("timestamp", descending: true).snapshots();
var streamBuilder = StreamBuilder<QuerySnapshot>(
stream: messagesSnapshot,
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> querySnapshot) {
if (querySnapshot.hasError)
return new Text('Error: ${querySnapshot.error}');
switch (querySnapshot.connectionState) {
case ConnectionState.waiting: return new Text("Loading...");
default:
return new ListView(
children: querySnapshot.data.documents.map((DocumentSnapshot doc) {
return new ListTile(
title: new Text(doc['message']),
subtitle: new Text(DateTime.fromMillisecondsSinceEpoch(doc['timestamp']).toString()),
);
}).toList()
);
}
}
);
return streamBuilder;
}
}
但现在我想显示每条消息的用户名(来自users 集合)。
我通常称其为客户端连接,尽管我不确定 Flutter 是否有特定的名称。
我找到了一种方法来做到这一点(我已经在下面发布了),但想知道在 Flutter 中是否有另一种/更好/更惯用的方法来执行这种类型的操作。
那么:在 Flutter 中查找上述结构中每条消息的用户名的惯用方式是什么?
【问题讨论】:
-
我认为唯一的解决方案我研究了很多rxdart
标签: firebase flutter google-cloud-firestore