[译]Flutter简易二维码扫描库barcode_scan2
重生
原来的 barcode_scan 不再维护了,所以 barcode_scan2 诞生了,并且支持空安全。
barcode_scan2
用于扫描 2D 条形码和二维码的 Flutter 插件。
该插件提供了两个常用的 iOS 和 Android 库的包装:
iOS: github.com/mikebuss/MT…
Android: github.com/dm77/barcod…
特性:
扫描 2D 条形码
扫描二维码
控制扫描时的闪光
权限处理
开始
Android
对于 Android,在使用此插件前需要做以下准备:
在 AndroidManifest.xml 中添加相机权限。
<uses-permission android:name="android.permission.CAMERA" />
该插件使用 Kotlin 编写。所以,需要在工程中添加 Kotlin 的支持。 查看 - 安装 Kotlin 插件 。
编辑工程级别的 build.gradle 文件如下:
buildscript { ext.kotlin_version = '1.3.61' // ... dependencies { // ... classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } // ... 复制代码
编辑应用级别的 build.gradle 文件如下:
apply plugin: 'kotlin-android' // ... dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" // ... } 复制代码
现在你可以在 pubspec.yaml 文件中依赖 barcode_scan2(原文是 barcode_scan,个人认为应该是 barcode_scan2):
dependencies: # ... barcode_scan2: any 复制代码
原文是: barcode_scan: any
在 Android Studio 点击 “Package get” 或在工程目录下运行 flutter package get
。
iOS
要在 iOS 上使用,需要在 Info.plist 中添加相机的使用描述。
<dict> <!-- ... --> <key>NSCameraUsageDescription</key> <string>Camera permission is required for barcode scanning.</string> <!-- ... --> </dict> 复制代码
使用
import 'package:barcode_scan/barcode_scan.dart'; void main() async { var result = await BarcodeScanner.scan(); print(result.type); // The result type (barcode, cancelled, failed) print(result.rawContent); // The barcode content print(result.format); // The barcode format (as enum) print(result.formatNote); // If a unknown format was scanned this field contains a note } 复制代码
高级用法
可以给扫描方法传递选项:
import 'package:barcode_scan/barcode_scan.dart'; void main() async { var options = ScanOptions( // set the options ); var result = await BarcodeScanner.scan(options: options); // ... } 复制代码
支持的选项
选项 | 类型 | 描述 | 支持 |
---|---|---|---|
strings.cancel | String | iOS 上的取消按钮文字 | 仅iOS |
strings.flash_on | String | 闪光开按钮文字 | iOS + Android |
strings.flash_off | String | 闪光关按钮文字 text | iOS + Android |
restrictFormat | BarcodeFormat[] | 限定可识别的格式 | iOS + Android |
useCamera | int | 用于扫描的相机的下标 (参考 BarcodeScanner.numberOfCameras ) | iOS + Android |
autoEnableFlash | bool | 开始扫描时使闪光可用 | iOS + Android |
android.aspectTolerance | double | 在 Android上支持自动对焦 | 仅Android |
android.useAutoFocus | bool | 设置用于计算最优的相机预览大小的长宽比公差 | 仅Android |
开发安装
安装 protobuf
Mac:
$ brew install protobuf $ brew install swift-protobuf 复制代码
Windows / Linux: github.com/protocolbuf…
激活 protobuf dart 插件:
$ flutter pub global activate protoc_plugin 复制代码
为 IDEA / Android Studio 安装 Protobuf Support
插件 或为 VS Code 安装 vscode-proto3
。
如果改变了 protos.proto , 需要执行 ./generate_proto.sh 来更新 dart / swift 代码。
常见问题
Android "Could not find org.jetbrains.kotlin:kotlin-stdlib-jre..."
把 org.jetbrains.kotlin:kotlin-stdlib-jre
改为 org.jetbrains.kotlin:kotlin-stdlib-jdk
(StackOverflow)
作者:bettersun
链接:https://juejin.cn/post/7056198138138198053