繁体   English   中英

当我单击对话框内的文本字段时,Flutter qr_code_scanner 相机未打开

[英]Flutter qr_code_scanner camera doesn't open when i click a textfield inside of dialog

我使用 qr_code_scanner 扫描二维码和条形码。 它的扫描完美。 但是当我想在扫描后使用对话框询问您扫描了多少产品,然后检查并控制它。但是当我在对话框中使用文本字段并且当我点击文本字段时,相机停止工作并且它保持在黑屏状态。 我应该怎么办? 怎么了? 我的扫描代码:

void _onQRViewCreated(QRViewController controller) {
      this.controller = controller; 
      controller.scannedDataStream.listen((scanData) { 
        controller.pauseCamera();
        player.play("scanner_sound.mp3");
        inspect(args);
        if (args.Barcode == scanData.code) {
          showDialog(
              context: context,
              builder: (context) {
                return WillPopScope(
                  onWillPop: () async {
                    Navigator.pop(context);
                    controller.resumeCamera();
                    return true;
                  },
                  child: AlertDialog(
                    title: const Text('Ürün Giriş'),
                    content: Column(
                      children: [
                        const Text('Bu üründen kaç adet okutuldu ?'),
                        TextField(
                          keyboardType: TextInputType.number,
                          controller: _controller,
                        ),
                      ],
                    ),
                    actions: <Widget>[
                      TextButton(
                          onPressed: () { 
                            bool isTrue = checkScannedCount(int.parse(_controller.text));
                            if (isTrue) {
                              var model = args.copyWith(ScannedCount: args.Count);
                              context.read<ProductCubit>().updateProduct(model);
                              Navigator.pop(context);
                              Navigator.pop(context);
                            } else {
                              ScaffoldMessenger.of(context).showSnackBar(
                                const SnackBar(
                                  content: Text("Lütfen sayımı tekrarlayınız."),
                                ),
                              );

                              Navigator.pop(context);
                              controller.resumeCamera(); //Its not starting camera again.
                            }
                          },
                          child: const Text('Tamam')),
                    ],
                  ),
                );
              });
        } else {
          showDialog(
              context: context,
              builder: (context) {
                return WillPopScope(
                  onWillPop: () async {
                    Navigator.pop(context);
                    controller.resumeCamera();
                    return true;
                  },
                  child: AlertDialog(
                    title: const Text('Hatalı Barkod veya Ürün'),
                    content: const Text('Yanlış ürünü veya barkodu okutuyor olabilirsiniz. Kontrol edip tekrar ediniz.'),
                    actions: <Widget>[
                      TextButton(
                          onPressed: () {
                            Navigator.pop(context);
                            controller.resumeCamera();
                          },
                          child: const Text('Tamam')),
                    ],
                  ),
                );
              });
        }
      });
    }

不再支持 qr_code_scanner。 由于这个 package 的底层框架,android 的 zxing 和 iOS 的 MTBBarcodescanner 都不再维护。 使用mobile_scanner

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM