前面一篇寫了生成二維碼圖片,這篇來寫使用相機掃描識別二維碼javascript
識別二維碼須要用到插件 barcode_scan java
首先在 pubspec.yaml 文件中添加如下依賴,添加依賴後在 pubspec.yaml 運行 flutter packages get 或 使用IDE更新軟件包。android
dependencies: ... barcode_scan: ^1.0.0
Android配置ios
在使用它以前須要先配置 android\app\src\main\AndroidManifest.xml app
在該文件中添加添加app獲取相機權限及BarcodeScanner activityasync
<!--獲取相機權限--> <uses-permission android:name="android.permission.CAMERA" />
<activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>
以下圖所示gradle
編輯項目級build.gradle文件ui
buildscript { ext.kotlin_version = '1.2.31' ... dependencies { ... classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } ...
如圖所示spa
以及編輯應用級build.gradle文件插件
apply plugin: 'kotlin-android' ... dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" ... }
如圖所示
注意 apply plugin: 'kotlin-android' 須要放在 apply plugin: 'com.android.application' 以後
IOS配置
在 Info.plist 中添加一下內容
<key>NSCameraUsageDescription</key> <string>Camera permission is required for barcode scanning.</string>
掃碼實現
完成以上步驟以後在須要觸發掃碼的頁面引用barcode_scan
import 'package:barcode_scan/barcode_scan.dart';
而後寫上一個調用掃碼的方法
// 掃描二維碼 Future scan() async { try { // 此處爲掃碼結果,barcode爲二維碼的內容 String barcode = await BarcodeScanner.scan(); print('掃碼結果: '+barcode); } on PlatformException catch (e) { if (e.code == BarcodeScanner.CameraAccessDenied) { // 未授予APP相機權限 print('未授予APP相機權限'); } else { // 掃碼錯誤 print('掃碼錯誤: $e'); } } on FormatException{ // 進入掃碼頁面後未掃碼就返回 print('進入掃碼頁面後未掃碼就返回'); } catch (e) { // 掃碼錯誤 print('掃碼錯誤: $e'); } }
在使用時觸發scan()方法便可,效果以下
默認的右上角打開閃光燈的文字爲英文,若是須要修改能夠到Flutter目錄下修改如下相應文件
Andriod文件
flutter\.pub-cache\hosted\pub.flutter-io.cn\barcode_scan-1.0.0\android\src\main\kotlin\com\apptreesoftware\barcodescan\BarcodeScannerActivity.kt
如圖
IOS文件
flutter\.pub-cache\hosted\pub.flutter-io.cn\barcode_scan-1.0.0\ios\Classes\BarcodeScannerViewController.m
如圖
注:該插件也能夠用來掃描條形碼