У мене є програма для чату у 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 шукати ім’я користувача для кожного повідомлення у вищевказаній структурі?