首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flutter -如何暂停qr扫描读取

Flutter -如何暂停qr扫描读取
EN

Stack Overflow用户
提问于 2021-09-08 16:26:13
回答 1查看 240关注 0票数 1

我在开发一个二维码扫描应用。并使用qr_code_scanner 0.5.2。

当我扫描二维码时,我的应用程序会跳转到另一个带有扫描代码的页面,但应用程序仍然会扫描二维码和新的页面,直到你没有关注任何二维码为止。

如何逐个扫描代码,并在另一页上暂停扫描,并在新页关闭时继续扫描?

谢谢

代码:

代码语言:javascript
复制
  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();
  });
});

}

编辑:解决方案代码:

代码语言:javascript
复制
  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();
});

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-08 16:59:12

qr_code_scanner控制器获取了一个名为pauseCamera的方法,用于在检测到有效条形码时暂停摄像头。

编辑:如果pauseCamera不工作,那么您可以添加布尔变量,并在获得有效的二维码时将其切换为true。并且,仅当此变量为false时才导航到新页面。

我已经更新了代码,请看一下。

代码语言:javascript
复制
...
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;
});
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69106670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档