Массив 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").

Другие вопросы по тегам