Flutter掃碼識別二維碼內容


前面一篇寫了生成二維碼圖片,這篇來寫使用相機掃描識別二維碼

識別二維碼需要用到插件 barcode_scan 

 

首先在 pubspec.yaml 文件中添加以下依賴,添加依賴后在 pubspec.yaml 運行 flutter packages get 或 使用IDE更新軟件包。

dependencies:
  ...
  barcode_scan: ^1.0.0

  

Android配置

在使用它之前需要先配置 android\app\src\main\AndroidManifest.xml 

在該文件中添加添加app獲取相機權限及BarcodeScanner activity

<!--獲取相機權限-->
<uses-permission android:name="android.permission.CAMERA" />

  

<activity android:name="com.apptreesoftware.barcodescan.BarcodeScannerActivity"/>

  

如下圖所示

編輯項目級build.gradle文件

buildscript {
    ext.kotlin_version = '1.2.31'
    ...
    dependencies {
        ...
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}
...

  

如圖所示

以及編輯應用級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

  

如圖

 

注:該插件也可以用來掃描條形碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM