Saya memiliki aplikasi obrolan di Flutter menggunakan Firestore, dan saya memiliki dua koleksi utama:
chats
, Yang bersemangat pada auto-id, dan memilikimessage
,timestamp
, danuid
bidang.users
, yang dikunciuid
, dan memilikiname
bidang
Di aplikasi saya, saya menunjukkan daftar pesan (dari messages
koleksi), 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 users
koleksi) 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?