我在Flutter中使用Firestore有一个聊天应用程序,并且有两个主要集合:
chats
,这是对键自动标识,并且有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中,惯用的方式是按照上述结构查找每条消息的用户名吗?