Я пытаюсь получить идентификаторы пользователей, за которыми я слежу, из потока пожарного магазина, а затем вызвать другой поток с сообщениями моих последователей с идентификаторами из ранее.
Я не знаю, является ли это правильным способом для его разработки, и если да, то как реализовать его с помощью флаттера ... Я пробовал streamBuilder для первого вызова, но я не знаю, как сделать второй потоковый вызов со списком идентификаторов.
Функция, которую я использовал для получения следующих идентификаторов
Stream<QuerySnapshot> followingUsersContent(String uid){
return _firestore.collection("following").document(uid).collection("userFollowing").snapshots();
}
и для получения своих сообщений:
Stream<DocumentSnapshot> myContentList(String userId) {
return _firestore.collection("posts").document(userId).collection("userPosts").document().snapshots();
}
Вот так я получаю первый список идентификаторов из виджета:
postWidget(){
return Container(
child: StreamBuilder<QuerySnapshot>(
stream: usersContentProvider.followingUsersContent(profileId),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot){
if (!snapshot.hasData) {
return Text("There's no data");
}
if (snapshot.hasData) {
List<DocumentSnapshot> docs = snapshot.data.documents;
List<UserFollowing> userInfoList = usersContentProvider.getFollowingsUidToList(docs);
return testUserID(userInfoList);
}
},
),
);
}
Widget testUserID(List<UserFollowing> userInfoList){
return Container(
child: Expanded(
child: ListView.builder(
itemCount: userInfoList.length,
itemBuilder: (BuildContext context, i){
return Text(userInfoList[i].uid ?? "There's no data", style: TextStyle(color: Colors.red),);
}
),
),
);
}
Пока все хорошо, все хорошо.
Теперь я должен поместить другой построитель потока в listView.Builder () {} "Я не думаю, что это хорошая идея" .. потому что он получает список uid с (контекст itemBuilder, i). Или есть лучший способ вызвать поток со всеми имеющимися у меня идентификаторами.
Пс хранятся в модели UserFollowing:
class UserFollowing{
final String _uid;
UserFollowing(this._uid);
String get uid => _uid;
}
и хранится здесь:
List getFollowingsUidToList(List<DocumentSnapshot> docList){
if (docList != null){
List<UserFollowing> followingUidsList = [];
docList.forEach((document){
String uid = document.data["uid"];
UserFollowing userPost = UserFollowing(uid);
followingUidsList.add(userPost);
});
return followingUidsList;
}
}
Все, что у меня осталось, - это сообщить новый поток с userFollowing.uid.
Как я могу это сделать? спасибо.