Saya memiliki aplikasi obrolan di Flutter menggunakan Firestore, dan saya memiliki dua koleksi utama:
chats, Yang bersemangat pada auto-id, dan memilikimessage,timestamp, danuidbidang.users, yang dikunciuid, dan memilikinamebidang
Di aplikasi saya, saya menunjukkan daftar pesan (dari messageskoleksi), dengan widget ini:
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;
}
}
Tapi sekarang saya ingin menunjukkan nama pengguna (dari userskoleksi) untuk setiap pesan.
Saya biasanya menyebut pihak klien bergabung, meskipun saya tidak yakin apakah Flutter memiliki nama spesifik untuk itu.
Saya telah menemukan satu cara untuk melakukan ini (yang saya posting di bawah), tetapi bertanya-tanya apakah ada cara lain / lebih baik / lebih idiomatis untuk melakukan jenis operasi ini di Flutter.
Jadi: apa cara idiomatis di Flutter untuk mencari nama pengguna untuk setiap pesan dalam struktur di atas?