Присутствующий заполнитель, когда в сборе нет данных - PullRequest
0 голосов
/ 01 мая 2019

Я пытаюсь отобразить виджет Text, когда коллекция пуста.Однако я никогда не смогу выполнить условие для отображения Text('No Events :(');, даже если моя коллекция пуста.Я предполагаю, что это ошибка синтаксиса дротика?

 Container(
                  height: 400,
                   // width: 500,
                    child: StreamBuilder<QuerySnapshot>(
                      stream: Firestore.instance.collection('Events').where("bandId", isEqualTo:identifier ).snapshots(),
                      builder: (BuildContext context,
                          AsyncSnapshot<QuerySnapshot> snapshot) {

                        if (!snapshot.hasData)
                          return new Text('No Events :(');
                        switch (snapshot.connectionState) {
                          case ConnectionState.waiting:
                            return new Text('Loading...');
                          default:
                            return new ListView(
                              children: snapshot.data.documents
                                  .map((DocumentSnapshot document) {

                                return  Dismissible(
                                  key: new Key(document.documentID),
                                  onDismissed: (direction){
                                    Firestore.instance.runTransaction((transaction) async {
                                      DocumentSnapshot snapshot=
                                          await transaction.get(document.reference);
                                          await transaction.delete(snapshot.reference);


                                    });
                                    Fluttertoast.showToast(msg: "Event Deleted");
                                  },

                                  child: CustomCard(
                                    event: document['event'],
                                    location: document['location'],
                                    service: document['service'],
                                    date: document['date'],
                                  ),
                                );
                              }).toList(),
                            );
                        }
                      },
                    )),

1 Ответ

0 голосов
/ 02 мая 2019

Вы создаете синтаксическую ошибку.Вы не можете использовать новый текст («Нечто»);new ListView (//) Вы должны указать виджет, который поддерживает дочерние элементы.Вы можете использовать столбец для отображения нескольких виджетов.

Причина: вы указываете If и Switch case.Я бы посоветовал охватить вашу логику только внутри корпуса коммутатора или в состоянии If-Else.

<code>
Container(
  height: 400,
  // width: 500,
  child: StreamBuilder(
    stream: Firestore.instance.collection('Events').where("bandId", isEqualTo:identifier ).snapshots(),
    builder: (BuildContext context,
      AsyncSnapshot snapshot) {
      return new Column(
        children: [
        if (!snapshot.hasData)
          new Text('No Events :('),
        switch (snapshot.connectionState) {
          case ConnectionState.waiting:
              new Text('Loading...');
          default:
            new Container(
              childe: ListView(
              children: snapshot.data.documents
                .map((DocumentSnapshot document) {
                  return  Dismissible(
                    key: new Key(document.documentID),
                    onDismissed: (direction){
                      Firestore.instance.runTransaction((transaction) async {
                        DocumentSnapshot snapshot=
                            await transaction.get(document.reference);
                            await transaction.delete(snapshot.reference);
                        });
                      Fluttertoast.showToast(msg: "Event Deleted");
                    },
                    child: CustomCard(
                      event: document['event'],
                      location: document['location'],
                      service: document['service'],
                      date: document['date'],
                    ),
                  );
                }).toList(),
              ),
            ),
        }
      ]),
    },
  )
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...