Как получить поля Firestore и обновить локальные переменные для виджетов - PullRequest
0 голосов
/ 23 апреля 2019

Я не могу заставить Firestore искать элементы с идентификатором документа и получать поля из этих документов для обновления моих локальных переменных.

Я пытаюсь использовать QR-коды для приложения системы проверки библиотеки. Я пытаюсь найти в Firestore элементы в базе данных, а затем отобразить их в пользовательском интерфейсе. 'code' - это необработанный QR-код, который может быть членом библиотеки или элементом. Сначала я проверяю, является ли он членом, а если нет, проверяет, является ли он элементом в базе данных. Мой код не обновляет dataList или dataNameList для обновления пользовательского интерфейса. мои операторы печати для отладки показывают только «1».

LiveBarcodeScanner(
          onBarcode: (code) {
            //print(code);
              if (dataSet.contains(code) == false) {
                dataSet.add(code);
                print('1');
                Firestore.instance.collection('Objects').document(widget.userID).collection('Members').document(code).snapshots().listen((snapshot) => (){
                  print('2');
                  if(snapshot.exists){
                    currentMemberName = snapshot.data['firstName'] + ' ' + snapshot.data['lastName'];
                    currentMemberID = code;
                    print('3');
                  }
                  else{
                    print('4');
                    Firestore.instance.collection('Objects').document(widget.userID).collection('Items').where('ItemID', isEqualTo: code).snapshots().listen((snapshot) => (){
                      print('5');
                      if(snapshot.documents.isNotEmpty) {
                        setState(() {
                          print('6');
                          dataList.add(code);
                          dataNameList.add(snapshot.documents[0]['Name']);
                          player.play(alarmAudioPath);
                        });

                      }
                      else{
                        print('No documents with that id found!');
                      }
                    });
                  }
                });
                //Create widgets for scanned items
                //debugPrint(dataWidget.toString());
              }
            return true;
          }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...