Flutter技术问题:扫码成功后如何关闭条码扫描器相机
解决flutter_barcode_scanner扫码成功后关闭相机的问题
你当前使用的是getBarcodeStreamReceiver流模式监听扫码结果,要关闭相机的核心是取消流的订阅——流持续监听时,相机不会自动停止。
修改后的代码示例:
// 定义类级或全局的StreamSubscription变量,用于保存订阅对象 StreamSubscription? _barcodeSubscription; void startBarcodeScan() { try { _barcodeSubscription = FlutterBarcodeScanner.getBarcodeStreamReceiver( '#ff6666', 'Cancel', true, ScanMode.BARCODE)! .listen((data) { // 处理扫码得到的数据 print(data); // 扫码成功后立即取消订阅,触发相机关闭 _barcodeSubscription?.cancel(); // 将变量置空,避免后续重复调用引发异常 _barcodeSubscription = null; }); } on PlatformException { print('条码扫描初始化失败'); } }
关键说明:
- 必须保留
listen()返回的StreamSubscription对象,否则无法主动终止流监听 - 调用
cancel()后,流会停止监听,相机随之关闭 - 若需要再次扫码,重新调用
startBarcodeScan()即可
内容的提问来源于stack exchange,提问作者swapnil mane
相关产品推荐
相关产品推荐

