ฉันมีแอพแชทใน 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 เพื่อค้นหาชื่อผู้ใช้สำหรับแต่ละข้อความในโครงสร้างข้างต้น