Флаттер: как показать сообщение, если у снимка нет данных - PullRequest
0 голосов
/ 02 апреля 2020

У меня есть простая проблема с флаттером, но я не могу понять, как ее решить. Так и здесь. Я пытаюсь показать сообщение в моем приложении, если в моментальном снимке, который я вызываю, нет данных в базе данных Firebase.

У меня есть этот код:

return Scaffold(
  body: Container (
    child: new LayoutBuilder(
      builder: (BuildContext context, BoxConstraints viewportConstraints) {
        return Column(
          children: <Widget>[
            SizedBox(
              height: MediaQuery.of(context).size.height * 0.020,
            ),
            SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Container(
                child: Column(
                  children: <Widget>[
                    StreamBuilder<QuerySnapshot>(
                        stream: db.collection('CONFIRMED HELP BENEFICIARY').where('Respondents_ID', isEqualTo: '${widget.UidUser}').snapshots(),
                        builder: (context, snapshot) {
                          if (snapshot.hasData) {
                            return Column(
                                children: snapshot.data.documents
                                    .map((doc) => buildItem(doc))
                                    .toList());
                          }
                          else {
                            return Container(
                                color: Colors.red,
                                height: 200,
                                width: 200,
                                child: Text("No Data"));

            )
          ],
        );
      },
    ),
  ),
);

Внутри моего singlescrollview У меня есть потоковый строитель в нем. Также если еще. Так что, если «snapshot.hasdata» я показываю список данных, и он успешно показывает это. Но проблема в «другом». Я пытался показать контейнер, который имеет цвет: красный и текст, который содержит «Нет данных», но я совершенно не могу понять, как @@ Он показывает контейнер за миллисекунды, а затем исчезает @@. Пожалуйста помоги.

1 Ответ

0 голосов
/ 02 апреля 2020

Было пропущено несколько скобок. Это вызвало проблему. Я исправил код для вас.

 return Scaffold(
  body: Container(
    child: new LayoutBuilder(
      builder: (BuildContext context, BoxConstraints viewportConstraints) {
        return Column(
          children: <Widget>[
            SizedBox(
              height: MediaQuery.of(context).size.height * 0.020,
            ),
            SingleChildScrollView(
              scrollDirection: Axis.vertical,
              child: Container(
                child: Column(
                  children: <Widget>[
                    StreamBuilder<QuerySnapshot>(
                        stream: db.collection('CONFIRMED HELP BENEFICIARY')
                            .where('Respondents_ID', isEqualTo: '${widget.UidUser}')
                            .snapshots(),
                        builder: (context, snapshot) {
                          if (snapshot.hasData) {
                            return Column(
                                children: snapshot.data.documents
                                    .map((doc) => buildItem(doc))
                                    .toList());
                          }
                          else {
                            return Container(
                                color: Colors.red,
                                height: 200,
                                width: 200,
                                child: Text("No Data"));
                          }
                        }
                    )
                  ],
                ),
              ),
            ),
          ],
        );
      },
    ),
  ),
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...