我在开发一个二维码扫描应用。并使用qr_code_scanner 0.5.2。
当我扫描二维码时,我的应用程序会跳转到另一个带有扫描代码的页面,但应用程序仍然会扫描二维码和新的页面,直到你没有关注任何二维码为止。
如何逐个扫描代码,并在另一页上暂停扫描,并在新页关闭时继续扫描?
谢谢
代码:
void _onQRViewCreated(QRViewController controller) {
setState(() {
this.controller = controller;
});
controller.scannedDataStream.listen((scanData) {
setState(() {
controller.pauseCamera();
Navigator.push(context,
MaterialPageRoute(builder: (context) {
return ReadData(data: scanData.code);
}),
);
controller.resumeCamera();
});
});}
编辑:解决方案代码:
void _onQRViewCreated(QRViewController controller) {
this.controller = controller;
controller.scannedDataStream.listen((scanData) async {
controller.pauseCamera();
await Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ReadData(data: scanData.code);
}),
);
controller.resumeCamera();
});}
发布于 2021-09-08 16:59:12
qr_code_scanner控制器获取了一个名为pauseCamera的方法,用于在检测到有效条形码时暂停摄像头。
编辑:如果pauseCamera不工作,那么您可以添加布尔变量,并在获得有效的二维码时将其切换为true。并且,仅当此变量为false时才导航到新页面。
我已经更新了代码,请看一下。
...
bool gotValidQR = false; //toggle this value when you got a new qr code
...
controller.scannedDataStream.listen((scanData)async {
if(gotValidQR) {
return;
}
gotValidQR = true;
dynamic pop = await Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ScannedData(data: scanData.code);
}),
);
gotValidQR = false;
});
...https://stackoverflow.com/questions/69106670
复制相似问题