Tôi có một ứng dụng trò chuyện trong Flutter bằng Firestore và tôi có hai bộ sưu tập chính:
chats
, Được keyed trên auto-id, và cómessage
,timestamp
vàuid
các lĩnh vực.users
, được khóauid
và có mộtname
trường
Trong ứng dụng của mình, tôi hiển thị một danh sách các tin nhắn (từ messages
bộ sưu tập), với tiện ích này:
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;
}
}
Nhưng bây giờ tôi muốn hiển thị tên người dùng (từ users
bộ sưu tập) cho mỗi tin nhắn.
Tôi thường gọi đó là tham gia phía khách hàng, mặc dù tôi không chắc liệu Flutter có tên cụ thể cho nó hay không.
Tôi đã tìm thấy một cách để làm điều này (mà tôi đã đăng bên dưới), nhưng tự hỏi liệu có cách nào khác / tốt hơn / thành ngữ hơn để thực hiện loại hoạt động này trong Flutter không.
Vậy: cách thành ngữ trong Flutter để tra cứu tên người dùng cho mỗi tin nhắn trong cấu trúc trên là gì?