Flutter实现:如何同时实现摄像头扫码QR Code与拍照功能?
推荐的Flutter包及实现方案
mobile_scanner:这是当前维护活跃、功能完善的扫码工具包,完全匹配你的需求:
- 支持在实时摄像头预览中自动检测QR Code,检测到后可触发自定义回调逻辑(比如提取扫码内容、执行后续操作)
- 未检测到QR Code时,可通过包内置的API调用拍照功能,直接获取当前摄像头画面的图片文件
- 核心实现示例:
late MobileScannerController mobileScannerController; @override void initState() { super.initState(); mobileScannerController = MobileScannerController( detectionSpeed: DetectionSpeed.normal, facing: CameraFacing.back, ); } @override Widget build(BuildContext context) { return Scaffold( body: MobileScanner( controller: mobileScannerController, onDetect: (capture) { final barcodes = capture.barcodes; if (barcodes.isNotEmpty) { final qrContent = barcodes.first.rawValue ?? ''; // 检测到QR Code时的回调处理逻辑 print('扫码内容:$qrContent'); } }, ), floatingActionButton: ElevatedButton( onPressed: () async { final image = await mobileScannerController.takePicture(); // 处理拍摄到的画面,比如保存或展示 print('已拍摄画面:${image?.path}'); }, child: const Text('拍摄当前画面'), ), ); }
qr_code_scanner:老牌扫码包,同样支持实时扫码+拍照功能,兼容性稳定。可通过控制器获取摄像头实例,在未检测到QR Code时调用拍照方法,扫码触发时通过
onQRViewCreated回调处理结果。
这两个包均基于原生平台能力实现,保证了QR Code检测的效率与设备兼容性,同时提供的拍照API能满足未扫码时的画面捕获需求。
内容的提问来源于stack exchange,提问作者Mark Dionnie
相关产品推荐
相关产品推荐

