ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

flutter_barcode_reader ScanOptions参数逐条详解:8大选项定制扫描界面

2026/8/24 8:58:19 拓冰建站 浏览量
flutter_barcode_reader ScanOptions参数逐条详解:8大选项定制扫描界面 flutter_barcode_reader ScanOptions参数逐条详解8大选项定制扫描界面【免费下载链接】flutter_barcode_readerA flutter plugin for reading 2D barcodes and QR codes.项目地址: https://gitcode.com/gh_mirrors/fl/flutter_barcode_readerflutter_barcode_reader是一款用于 Flutter 的开源扫码插件pub 包名为barcode_scan支持扫描 2D 条码和二维码。只要把ScanOptions对象传给BarcodeScanner.scan()就能完全掌控扫码界面——本文带你逐条吃透全部 8 个选项新手一次配好扫码体验。快速了解flutter_barcode_reader 能做什么flutter_barcode_reader封装了 iOS 与 Android 上两套成熟的原生扫码库核心特性包括 扫描 QR 码、DataMatrix、Aztec 等 2D 条码️ 扫描 EAN-13、Code128、UPC-E 等 1D 条码 控制扫描过程中的闪光灯✅ 自动处理相机权限申请。Dart 侧入口是 platform_wrapper.dart 中的BarcodeScanner类。扫描成功后会返回ScanResult对象定义于 scan_result.dart包含rawContent条码内容、format条码格式、type结果类型等字段。最简单的用法零配置var result await BarcodeScanner.scan(); print(result.rawContent); // 扫到的条码内容想要定制扫描界面只需传入一个ScanOptions对象var result await BarcodeScanner.scan(options: options);ScanOptions 完整参数一览ScanOptions定义在 scan_options.dart 中一共 8 个可配置项。先看这张速查表#选项类型默认值支持平台1strings[cancel]StringCanceliOS2strings[flash_on]StringFlash oniOS Android3strings[flash_off]StringFlash offiOS Android4restrictFormatListBarcodeFormat[]全部格式iOS Android5useCameraint-1默认摄像头iOS Android6autoEnableFlashboolfalseiOS Android7android.aspectTolerancedouble0.5Android8android.useAutoFocusbooltrueAndroid其中第 1~3 项共用一个strings映射表第 7、8 项则嵌套在android对象android_options.dart里。8 大选项逐条详解1. strings[cancel]iOS 取消按钮文案strings映射表存放所有展示给用户看的文字。cancel用于修改 iOS 扫码界面的取消按钮文案。如果 App 是中文界面把它改成取消是本地化的第一步var options ScanOptions(strings: { cancel: 取消, });注意cancel仅在 iOS 生效Android 上系统返回手势天然承担了取消功能。2. strings[flash_on]闪光灯开启按钮文案3. strings[flash_off]闪光灯关闭按钮文案flash_on和flash_off是扫码界面上闪光灯切换按钮的两个文案双端都生效。和第 1 项配合扫描界面即可完整本地化var options ScanOptions(strings: { cancel: 取消, flash_on: 开闪光, flash_off: 关闪光, });官方示例工程提供了实时编辑这三段文案的演示页面见 main.dart 中的scan()方法。4. restrictFormat限定识别的条码格式给restrictFormat传入BarcodeFormat列表可以让相机只识别指定格式。全部可选格式定义在 barcode_format.proto包括qr二维码、aztec、dataMatrix常见 2D 码ean8/ean13/upce零售商品条码code39/code93/code128/pdf417工业与物流条码。默认空列表表示使用平台支持的完整格式集。如果你的业务只需要 QR 码收窄格式能减少识别计算量也避免误扫屏幕上无关的条码var options ScanOptions(restrictFormat: [BarcodeFormat.qr]);5. useCamera指定用哪个摄像头扫描useCamera是摄像头索引-1表示使用系统默认摄像头。设备的摄像头总数可以通过BarcodeScanner.numberOfCameras查询var count await BarcodeScanner.numberOfCameras; // 可用摄像头数量 var options ScanOptions(useCamera: 0); // 使用第 1 个摄像头对同时配备前后置摄像头的设备特别有用比如收银台场景可强制后置摄像头避免用户误开自拍摄像头。6. autoEnableFlash打开界面自动点亮闪光灯autoEnableFlash是布尔值设为true后扫码界面一打开就会自动开启闪光灯在地下室、夜间等弱光场景下很实用省去了手动点按闪光灯按钮的操作var options ScanOptions(autoEnableFlash: true);它与flash_on/flash_off按钮并不冲突这个选项决定初始状态按钮则允许用户在扫描过程中随时手动切换。7. android.aspectTolerance预览画面宽高比容差仅 AndroidaspectTolerance是双精度浮点数默认0.5。它参与计算相机预览画面的最优尺寸数值越大允许与屏幕宽高比的偏差越大预览画面越容易填满屏幕、不留黑边。调参建议预览画面上下黑边太大 → 调大到0.8预览画面明显拉伸变形 → 调小到0.2。官方示例 App 提供了 -1.0 到 1.0 的滑杆可实时调整该值观察效果见 main.dart。8. android.useAutoFocus自动对焦开关仅 AndroiduseAutoFocus是布尔值默认true。开启后 Android 端会周期性触发硬件对焦保证条码持续清晰底层实现可参考 ZXingAutofocusScannerView.kt。如果你的场景中条码与镜头距离固定如固定收银台可以关闭它避免周期性对焦带来的画面呼吸感抖动var options ScanOptions(android: AndroidOptions(useAutoFocus: false));完整示例组装一个定制扫描界面把 8 个选项组合起来构建中文界面 只扫 QR 默认摄像头 自动对焦的扫码体验var options ScanOptions( strings: { cancel: 取消, flash_on: 开闪光, flash_off: 关闪光, }, restrictFormat: [BarcodeFormat.qr], useCamera: -1, autoEnableFlash: false, android: AndroidOptions( aspectTolerance: 0.5, useAutoFocus: true, ), ); try { var result await BarcodeScanner.scan(options: options); print(result.rawContent); } on PlatformException catch (e) { if (e.code BarcodeScanner.cameraAccessDenied) { // 用户拒绝了相机权限引导其前往系统设置开启 } }别忘两个平台前置配置Android 需要在AndroidManifest.xml声明相机权限iOS 需要在Info.plist中添加NSCameraUsageDescription否则系统会直接拦截相机调用。常见问题 FAQQ用户拒绝了相机权限怎么办scan()会抛出 code 为cameraAccessDenied的PlatformException常量定义见 platform_wrapper.dart。捕获异常后引导用户去系统设置重新开启是标准做法。官方示例的处理方式见 main.dart。Q两个android.*选项在 iOS 上生效吗不会。它们封装在AndroidOptions里仅 Android 平台在序列化配置时读取在 iOS 上传入它们没有任何副作用可以安全地两端共用同一份ScanOptions。Q从旧版本升级要注意什么当前版本3.0.1要求 Dart SDK 2.1 及以上。从 2.x 升级时scan()返回值改为ScanResult对象条码内容需从rawContent属性读取详见 UPGRADE.md。小结ScanOptions用 8 个选项覆盖了扫描界面全部常见的定制需求按钮文案、识别格式、摄像头选择、闪光灯、预览画面。默认值已经开箱即用按需改动任意几项你的扫码体验就能贴近原生应用。整个插件代码量不大Dart 侧配置模型在 model/ 目录原生实现分布在android/src/main/kotlin/de/mintware/barcode_scan/与ios/Classes/下源码非常适合作为 Flutter 插件开发的入门读物。 小贴士项目 README 中注明维护已暂停如果业务对长期迭代有较高要求引入前也可以横向评估一下其他活跃维护的扫码插件。【免费下载链接】flutter_barcode_readerA flutter plugin for reading 2D barcodes and QR codes.项目地址: https://gitcode.com/gh_mirrors/fl/flutter_barcode_reader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考