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

如何使用flutter_qr_reader从已拍摄图片中识别多个二维码?

解决Flutter图片中多二维码识别问题

flutter_qr_reader的局限

flutter_qr_reader的imgScan方法仅返回第一个识别到的二维码内容,该库本身没有提供多二维码识别的能力,所以无法用它实现你的需求。

使用zxing_flutter实现多码识别

推荐使用基于ZXing的zxing_flutter库,它原生支持单图片内的多二维码识别,具体实现步骤如下:

  1. 添加依赖到pubspec.yaml:
dependencies:
  zxing_flutter: ^0.1.5 # 请使用最新版本
  image_picker: ^0.8.7+4
  1. 修改你的代码逻辑:
TextButton(
  onPressed: () async {
    var image = await ImagePicker().getImage(source: ImageSource.gallery);
    if (image == null) return;
    
    // 读取图片文件字节
    final fileBytes = await File(image.path).readAsBytes();
    // 识别图片中所有二维码
    final scanResults = await ZxingFlutter.decodeMulti(
      fileBytes,
      format: BarcodeFormat.QR_CODE,
    );
    
    setState(() {
      // 将所有二维码内容转为列表或拼接显示
      // 示例:用换行分隔所有识别结果
      data = scanResults.map((result) => result.code).join('\n');
      // 也可以直接保存为列表:List<String> qrCodes = scanResults.map((r) => r.code).toList();
    });
  },
  child: const Text("识别图片"),
),
  1. 说明
    decodeMulti方法返回的是一个包含所有识别结果的列表,每个结果对象包含:
  • code:二维码的文本内容
  • boundingBox:二维码在图片中的位置边界框(可用于定位)
  • format:条码格式(这里固定为QR_CODE)

你可以根据业务需求提取对应的数据进行处理。

内容的提问来源于stack exchange,提问作者Harry

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 14:54:20