Итак, я работаю над приложением, которое сканирует штрих-код и ищет в базе данных firestore документ с идентификатором, который совпадает с отсканированным штрих-кодом, а затем добавляет данные в список карт.
Однако я застрял, так как не знаю, как присвоить значение только одного из полей документа правильному ключу на картах.
Вот соответствующий код:
Future scan() async {
try {
String barcode = await BarcodeScanner.scan();
var databaseSearchResult = firestore.collection("packages").document(barcode);
String databaseID =
firestore.collection("packages").document(barcode).documentID;
if (databaseID == barcode) {
setState(() {
productList.add({
"bruh": databaseSearchResult["bruh"],
"bruh 2": databaseSearchResult["bruh 2"]
});
});
}
} catch (e) {
Fluttertoast.showToast(msg: "Object not found in database");
}
try {} on PlatformException catch (e) {
if (e.code == BarcodeScanner.CameraAccessDenied) {
setState(() {
this.barcode = 'The user did not grant the camera permission!';
});
} else {
setState(() => this.barcode = 'Unknown error: $e');
}
} on FormatException {
setState(() => this.barcode =
'null (User returned using the "back"-button before scanning anything. Result)');
} catch (e) {
setState(() => this.barcode = 'Unknown error: $e');
}
}
Как всегда, помощь приветствуется, и, если возможно, постарайтесь сделать ее проще, я новичок в трепетании и дротике. Большое спасибо
1 ответ
Вы должны получить данные документа, но вы этого не делаете здесь. Попробуйте следующий код:
Future scan() async {
try {
String barcode = await BarcodeScanner.scan();
var databaseSearchResult = firestore.collection("packages").document(barcode);
DocumentSnapshot documentData = await databaseSearchResult.get() //read the data from the document
Map<String,dynamic> dataMap = documentData.data; //this returns the data as a map where keys are the field names and values are the values of that field
String databaseID =
firestore.collection("packages").document(barcode).documentID;
if (databaseID == barcode) {
setState(() {
productList.add({
"bruh": dataMap["bruh"], //you access the value of "bruh" field in your database
"bruh 2": dataMap["bruh 2"]
});
});
}
} catch (e) {
Fluttertoast.showToast(msg: "Object not found in database");
}
try {} on PlatformException catch (e) {
if (e.code == BarcodeScanner.CameraAccessDenied) {
setState(() {
this.barcode = 'The user did not grant the camera permission!';
});
} else {
setState(() => this.barcode = 'Unknown error: $e');
}
} on FormatException {
setState(() => this.barcode =
'null (User returned using the "back"-button before scanning anything. Result)');
} catch (e) {
setState(() => this.barcode = 'Unknown error: $e');
}
}
Похожие вопросы
Новые вопросы
flutter
Flutter - это набор средств разработки пользовательского интерфейса с открытым исходным кодом, созданный Google. Он используется для разработки приложений для Android, iOS, Linux, Mac, Windows, Google Fuchsia и Интернета из единой кодовой базы. Приложения Flutter написаны на языке Dart.