Как я могу получить данные из одного поля документа пожарного депо? - PullRequest
0 голосов
/ 18 апреля 2020

Итак, я работаю над приложением, которое сканирует штрих-код и ищет в базе данных пожарного магазина документ с идентификатором, совпадающим с отсканированным штрих-кодом, а затем добавляет данные в список карт.

Однако я застрял, поскольку не знаю, как назначить значение только одного из полей документа правильному ключу на картах

Вот соответствующий код:

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 Ответ

1 голос
/ 18 апреля 2020

Вы должны получить данные документа, но вы не делаете это здесь. Попробуйте код ниже:

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');
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...