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 | 数据类型 | 描述 | 适用于 |
---|---|---|---|
strings | map | cancel: 取消按钮文字; flash_on: 开启闪光灯按钮文字; flash_off: 关闭闪光灯按钮文字 | cancel: iOS; 其他: iOS/Android |
restrictFormat | BarcodeFormat[] | 限制不可识别的格式 | iOS/Android |
useCamera | int | 使用的摄像头编号(参考```BarcodeScanner.numberOfCameras) | iOS/Android |
autoEnableFlash | bool | 是否自动开启闪光灯 | iOS/Android |
android | AndroidOptions* | android 相关配置 | Android |
*AndroidOptions包含两个属性,aspectTolerance为double类型,用来设置画面比例。useAutoFocus为bool类型,用来开关自动对焦功能