阅读 235

[译]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.cancelStringiOS 上的取消按钮文字仅iOS
strings.flash_onString闪光开按钮文字iOS + Android
strings.flash_offString闪光关按钮文字 textiOS + Android
restrictFormatBarcodeFormat[]限定可识别的格式iOS + Android
useCameraint用于扫描的相机的下标 (参考 BarcodeScanner.numberOfCameras)iOS + Android
autoEnableFlashbool开始扫描时使闪光可用iOS + Android
android.aspectTolerancedouble在 Android上支持自动对焦仅Android
android.useAutoFocusbool设置用于计算最优的相机预览大小的长宽比公差仅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

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐