Я пытался прослушать два разных документа коллекции. Один показан ниже. Он в основном записывает данные в реальном времени на экран. Я хочу прослушать и другую коллекцию, но вместо этого выполнить определенную функцию. Как мне поступить, пожалуйста? Очень ценю любую помощь!
Expanded(
child: StreamBuilder(
stream:
FirebaseFirestore.instance.collection('location').snapshots(),
builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
return Center(child: CircularProgressIndicator());
}
return ListView.builder(
itemCount: snapshot.data?.docs.length,
itemBuilder: (context, index) {
return ListTile(
title:
Text(snapshot.data!.docs[index]['name'].toString()),
subtitle: Row(
children: [
Text(snapshot.data!.docs[index]['latitude']
.toString()),
SizedBox(
width: 20,
),
Text(snapshot.data!.docs[index]['longitude']
.toString()),
],
),
trailing: IconButton(
icon: Icon(Icons.directions),
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(
builder: (context) =>
MyMap(snapshot.data!.docs[index].id)));
},
),
);
});
},
)),
Вы можете слушать другие коллекции firebase и вызывать свои функции следующим образом.
FirebaseFirestore.instance
.collection('location')
.snapshots()
.listen((QuerySnapshot querySnapshot) {
final firestoreList = querySnapshot.docs;
print(firestoreList.first.data());
}).onError((e) => print(e));
Я отредактировал свой ответ, пожалуйста, проверьте. Это будет работать сейчас
Добро пожаловать, если это сработало, пожалуйста, примите этот ответ и проголосуйте, пожалуйста. Благодарю вас!
У меня недостаточно репутации, чтобы проголосовать :(( но большое спасибо
Это дает мне следующую ошибку: Тип аргумента «void Function (DocumentSnapshot <Object?>)» не может быть назначен типу параметра «void Function (QuerySnapshot <Map <String, dynamic>>)?»