Flutter QuerySnapshot возвращает значение null - PullRequest
0 голосов
/ 08 мая 2020

Что я действительно хочу сделать, так это взять все идентификаторы ORDER ID («order_id»), которые находятся в коллекции «delivery», и использовать эти идентификаторы в другом вызове, то есть войти в коллекцию «orders» и сообщить всем идентификаторам I попали в коллекцию "доставить" как документы.

мой поток:

    function() {
        Firestore.instance
            .collection("delivers")
            .document("fvRpb1xDOKejJ5AEqXEeThaqhci1")
            .collection("orders")
            .snapshots()
            .listen((orders) {
          orders.documents.forEach((f) {
            print("+++++ First +++++ ${f.data}");
            Firestore.instance
                .collection("orders")
                .document(f.documentID)
                .snapshots();
          });
        });
      }

    My StreamBuilder Bellow:



body: Container(
        child: StreamBuilder<QuerySnapshot>(
            stream: function(),
            builder: (context, AsyncSnapshot<QuerySnapshot> snapshot) {
              print("SNAPSHOT DATA ++++++ ${snapshot.toString()} ++++++}");
              // if (snapshot.hasError)
              //   print("ERRO EM ++++++ ${snapshot.error.toString()} ++++++}");
              if (!snapshot.hasData)
                return Center(
                    child: RaisedButton(
                        onPressed: function, child: Text("press")));
              switch (snapshot.connectionState) {
                case ConnectionState.waiting:
                  return circularProgress();
                  break;
                default:
                  print(
                      "CONNECTION DEFAULT ++++++ ${snapshot.toString()} ++++++}");
                  return ListView(
                      children: snapshot.data.documents
                          .map((DocumentSnapshot myOrder) {
                    return Text(myOrder["quantity"]);
                  }).toList());
              }
            }),
      ),

ВОЗВРАТ:

I / flutter (600): +++++ First + ++++ {order_id: 2tC5gbAYLoj375w9HrKc}

Выполнение горячей перезагрузки ... ⡿ I / flutter (600): SNAPSHOT DATA ++++++ AsyncSnapshot (ConnectionState.none, null, null) +++ +++}

снимки экрана моего хранилища https://drive.google.com/drive/u/0/folders/1ZeXog80wvnR-6cTG2VCE0jOVfrSEyDaM

1 Ответ

0 голосов
/ 08 мая 2020

Вы ничего не возвращаете из function().

Добавьте ключевое слово return перед снимками как:

return Firestore.instance
    .collection("delivers")
    .document("fvRpb1xDOKejJ5AEqXEeThaqhci1")
    .collection("orders")
    .snapshots();

или просто поместите снимок перед потоком, как:

stream:Firestore.instance.collection('delivers').document('fvRpb1xDOKejJ5AEqXEeThaqhci1')____________.snapshots(),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...