FirebaseAnimatedList запрос, когда запрос не имеет данных для извлечения - PullRequest
1 голос
/ 07 марта 2020

Я новичок в изучении флаттера и пожарной базы и пытаюсь запросить некоторые данные из базы данных Firebase в реальном времени, используя FirebaseAnimatedList в приведенном ниже примере кода. Я пытаюсь передать this.userid для извлечения данных в соответствии с передаваемым значением, но иногда из базы данных. может не иметь данных в соответствии с тем, что передается. Я просто хочу знать, как обрабатывать такие случаи, и показать отзыв о том, что нет данных, соответствующих запросу. По сути, это поиск, в котором могут отсутствовать значения, которые ищет пользователь.

пример кода:


    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 Ответ

2 голосов
/ 07 марта 2020

snapshot имеет тип DataSnapshot, поэтому вы можете проверить, существуют ли данные или нет, используя свойство exists:

itemBuilder: (BuildContext context, DataSnapshot snapshot,
                Animation<double> animation, int index) {
            if(!snapshot.exists){
                  return Text("No Data");
            } 
            else {
              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,
                    ),
                  ],
                ),
              );
             } 
            }

Для получения дополнительной информации проверьте следующее:

https://pub.dev/documentation/firebase_dart/latest/firebase_dart/DataSnapshot-class.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...