Flutter barcode_scanner2 使用

马和硕
2023-12-01

Flutter barcode_scanner2 使用

barcode_scanner2 是一个基于flutter平台的第三方扫码库,其前身barcode_scanner 已不再更新。其实现了二维码、条形码识别功能,以及调用的相机相关功能(如闪光灯等)。其实现了自动获取运行时权限功能。

导入

首先,在项目的android工程中,在其AndroidManifest.xml中添加相机权限

<uses-permission android:name="android.permission.CAMERA" />

同时确保工程支持kotlin插件。

iOS目录下则需要在Info.plist中声明需要的权限

<dict>
    <!-- ... ->
    <key>NSCameraUsageDescription</key>
    <string>权限需求说明文本</string>
    <!-- ... ->
</dict>

在项目目录下的pubspec.yaml文件中添加如下依赖

dependencies: 
    # ...
    barcode_scan: any   // 指定版本号

运行Packages get即可

使用

基本用法示例:

import 'package:barcode_scan/barcode_scan.dart';

void funcB() {
    // scan()方法返回 Future<ScanResult>实例
    BarcodeScanner.scan().then((value) {
        print(result.type); // 结果类别,barcode、cancelled,failed三种结果
        print(result.rawContent); // 扫码结果
        print(result.format); 
        print(result.formatNote);   // 未知格式会在此处生成提示
    }
}

基本用法中,直接调用scan()方法可以返回一个Future结果,包含扫码结果、格式等内容。scan()方法有一个接受options参数的重载

进阶用法示例:

void funB() {
    var options = ScanOptions(
        // 附带参数
    );
    
    BarcodeScanner.scan(options: options).then((value) {
        print(result.type); // 结果类别,barcode、cancelled,failed三种结果
        print(result.rawContent); // 扫码结果
        print(result.format); 
        print(result.formatNote);   // 未知格式会在此处生成提示
    }
}

options 包含如下配置

Option数据类型描述适用于
stringsmapcancel: 取消按钮文字; flash_on: 开启闪光灯按钮文字; flash_off: 关闭闪光灯按钮文字cancel: iOS; 其他: iOS/Android
restrictFormatBarcodeFormat[]限制不可识别的格式iOS/Android
useCameraint使用的摄像头编号(参考```BarcodeScanner.numberOfCameras)iOS/Android
autoEnableFlashbool是否自动开启闪光灯iOS/Android
androidAndroidOptions*android 相关配置Android

*AndroidOptions包含两个属性,aspectTolerance为double类型,用来设置画面比例。useAutoFocus为bool类型,用来开关自动对焦功能

 类似资料: