Массив Flutter и Firebase Как я могу проверить наличие поля
Я пытаюсь дождаться, когда пользователь (массив) проверяет наличие значения, как я могу?
// если поле массива waitUser существует 2 вернуть текст («этот текст») иначе вернуть текст («другой текст»)
body: StreamBuilder(
stream: FirebaseFirestore.instance
.collection('events')
.where('eventCity', isEqualTo: 'Ankara')
.snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) {
// ERROR
return Center(
child: CircularProgressIndicator(),
);
} else {
return Container(
child: ListView(
scrollDirection: Axis.vertical,
children: snapshot.data.docs.map((document) {
// if waitUser array field exist 2 return text("this text") else return text("other text")
}).toList(),
),
);
}
},
),
1 ответ
В другой части вашего построителя сделайте следующее:
return Container(
child: ListView(
scrollDirection: Axis.vertical,
children: snapshot.data.docs.map((document) {
// Get the waitUser array from the document.
List<dynamic> waitUser = document.data()["waitUser"] as List<dynamic>;
// Check for "2" in the array.
if (waitUser.contains("2")) {
// "2" was in the array.
return text("this text");
} else {
// "2" was not in the array.
return text("other text");
}
}).toList(),
),
);
Это соберет каждый документ, который соответствует вашим критериям
eventCity == "Ankara"
. Для каждого из этих документов он проверит
waitUser
массив для «2». Если в массиве существует "2", он вернет
text("this text")
; в противном случае он вернется
text("other text")
.