Я не могу заставить 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;
}