如何使用flutter_qr_reader从已拍摄图片中识别多个二维码?
解决Flutter图片中多二维码识别问题
flutter_qr_reader的局限
flutter_qr_reader的imgScan方法仅返回第一个识别到的二维码内容,该库本身没有提供多二维码识别的能力,所以无法用它实现你的需求。
使用zxing_flutter实现多码识别
推荐使用基于ZXing的zxing_flutter库,它原生支持单图片内的多二维码识别,具体实现步骤如下:
- 添加依赖到
pubspec.yaml:
dependencies: zxing_flutter: ^0.1.5 # 请使用最新版本 image_picker: ^0.8.7+4
- 修改你的代码逻辑:
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("识别图片"), ),
- 说明
decodeMulti方法返回的是一个包含所有识别结果的列表,每个结果对象包含:
code:二维码的文本内容boundingBox:二维码在图片中的位置边界框(可用于定位)format:条码格式(这里固定为QR_CODE)
你可以根据业务需求提取对应的数据进行处理。
内容的提问来源于stack exchange,提问作者Harry
相关产品推荐
相关产品推荐

