如何获取Firestore字段并更新小部件的局部变量

时间:2019-04-23 02:25:17

标签: firebase dart flutter google-cloud-firestore

我无法让Firestore查找具有文档ID的项目并从这些文档中获取字段以更新本地变量。

我正在尝试将QR码用于图书馆结帐系统应用程序。我正在尝试在Firestore中搜索数据库中的项目,然后在UI上显示它们。 “代码”是原始QR代码,可以是库成员或项目。我首先检查它是否是成员,如果不是,请检查它是否是数据库中的一个项目。我的代码似乎没有更新要更新的UI的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;
          }

0 个答案:

没有答案