Flutter FirebaseAnimatedList запрос не работает должным образом - PullRequest
0 голосов
/ 07 марта 2020

Я попытался получить некоторые данные из базы данных Firebase в реальном времени, используя FirebaseAnimatedList(), используя поисковый запрос, который должен быть query : ref.child("users").child(userPath).orderByChild("id").equalTo(userID), но вместо этого запрос работает без второго потомка, как это query : ref.child("users").orderByChild("id").equalTo(userID)

И похоже, что когда данные передаются .equalTo(userID), если переданный идентификатор пользователя не найден в базе данных, он загружает пустой контейнер. Я ищу способ избежать загрузки пустого контейнера и вернуть пользовательское представление, если нет значения, соответствующего * 1007. *

пример базы данных в реальном времени:

{
  "users" : {
    "user1" : {
      "lname" : "dee",
      "id" : "12"
    },
    "user2" : {
      "lname" : "nee",
      "id" : "13"
    },
    "user3" : {
      "lname" : "lee",
      "id" : "14"
    },
    "user4" : {
      "lname" : "bree",
      "id" : "15"
    }
  }

Код:

FirebaseAnimatedList(
        query: ref.child("users").orderByChild("id").equalTo(this.userid),
        itemBuilder: (BuildContext context, DataSnapshot snapshot,
            Animation<double> animation, int index) {
          return SizeTransition(
            sizeFactor: animation,
            axis: Axis.horizontal,
            axisAlignment: -0.8,
            child: Column(
              textDirection: TextDirection.ltr,
              verticalDirection: VerticalDirection.down,
              children: <Widget>[
                SizedBox(
                  height: 100.0,
                ),
                Text(
                  "User ID : " + snapshot.value["id"],
                ),
                SizedBox(
                  height: 50.0,
                ),
              ],
            ),
          );
        }));

1 Ответ

0 голосов
/ 08 марта 2020

Запрос на самом деле правильный, чтобы иметь возможность доступа к id с использованием orderByChild("id"), вам не нужно использовать другой метод child().

Я ищу способ чтобы избежать загрузки пустого контейнера и возврата пользовательского представления

FirebaseAnimatedList(
        query: ref.child("users").orderByChild("id").equalTo(this.userid),
        itemBuilder: (BuildContext context, DataSnapshot snapshot,
            Animation<double> animation, int index) {
         if(snapshot.value != null){
          return SizeTransition(
            sizeFactor: animation,
            axis: Axis.horizontal,
            axisAlignment: -0.8,
            child: Column(
              textDirection: TextDirection.ltr,
              verticalDirection: VerticalDirection.down,
              children: <Widget>[
                SizedBox(
                  height: 100.0,
                ),
                Text(
                  "User ID : " + snapshot.value["id"],
                ),
                SizedBox(
                  height: 50.0,
                ),
              ],
            ),
          );
         }
         else{
             return Text("no Data");
            }
        return CircularProgressIndicator();
        }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...