You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 21:40:19