gpt4 book ai didi

search - Flutter Firestore Query Listen - 无法引用 Listen 中的变量

转载 作者:IT王子 更新时间:2023-10-29 07:06:34 28 4
gpt4 key购买 nike

我有一个查询来查找指定条形码的文档 ID:

Future findBarcode() async {
String searchBarcode = await BarcodeScanner.scan();

Firestore.instance.collection('${newUser.userLocation}').where('barcode', isEqualTo: '${searchBarcode}').snapshots().listen(
(data) {
String idOfBarcodeValue = data.documents[0].documentID;
print(idOfBarcodeValue);
}
);
}

但是,我想在函数外部引用 idOfBarcodeValue。我正在尝试找到一种方法将其传递给另一个函数以传递给 SimpleDialog。

目前,函数之外的任何东西都无法识别它。它确实有效,打印验证。

下面是正在执行的扫描功能:

Future scan() async {
try {
String barcode = await BarcodeScanner.scan();
setState(() => this.barcode = barcode);
} 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');
}
}

最佳答案

snapshots()返回 Stream<Query> .以与您相同的方式 await返回 Future 的函数, 你可以 await for Stream 的所有值(可以是零、一个或多个)产生,例如:

Future findBarcode() async {
String searchBarcode = await BarcodeScanner.scan();

String idOfBarcodeValue;
Stream<Query> stream = Firestore.instance
.collection('${newUser.userLocation}')
.where('barcode', isEqualTo: '${searchBarcode}')
.snapshots();
await for (Query q in stream) {
idOfBarcodeValue = q.documents[0].documentID;
}

print(idOfBarcodeValue);
// if the stream had no results, this will be null
// if the stream has one or more results, this will be the last result
return idOfBarcodeValue;
}

关于search - Flutter Firestore Query Listen - 无法引用 Listen 中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371534/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com