Flutter二维码扫描插件flutter_barcode_scanner_fork的使用

Flutter二维码扫描插件flutter_barcode_scanner_fork的使用

一个为Flutter应用添加了在Android和iOS上支持条形码扫描功能的插件。

尝试示例

只需克隆或下载仓库,打开项目(Android Studio/VS Code),打开pubspec.yaml并点击Packages get。 连接设备并点击run。 要在iPhone上运行,你需要先从Xcode运行,并在example/ios中执行pod install,然后再次从Xcode运行。

入门指南

请按以下步骤操作,分别针对Android和iOS进行配置:

Android

无需进行任何操作。

iOS - 需要Swift支持

部署目标版本:12

1. 新建项目
  1. 创建一个新的Flutter项目。请确保勾选了Include swift support for iOS code
  2. 创建新项目后,在Xcode中打开/ios文件夹,设置最小部署目标为12,并将Swift版本设为5。
  3. 设置好部署目标和Swift版本后,关闭Xcode并在Flutter项目的/ios文件夹中运行pod install

完成基本配置后,继续到下一节“如何使用”。

2. 添加到现有Flutter项目

如果现有的iOS代码是Swift,则只需进行以下操作:

  1. 设置最小部署目标为12,并将Swift版本设为5。
  2. 关闭Xcode并在Flutter项目的/ios文件夹中运行pod install
  3. 现在继续到下一节“如何使用”。

如果现有的iOS代码是Objective-C,则需要进行以下操作:

  1. 在不同的位置创建一个新的Flutter项目(请确保勾选了Include swift support for iOS code)。
  2. 复制新创建的/ios文件夹,并替换现有项目的/ios文件夹。
  3. 打开iOS项目在Xcode中,设置最小部署目标为12,并将Swift版本设为5。
  4. 运行pod install

注意: 如果你在iOS部分做了任何更改,可能需要重新配置这些设置。

如何使用?

为了在iOS上使用,你需要添加相机使用描述。为此,请打开Xcode并添加相机使用描述到Info.plist文件中:

<key>NSCameraUsageDescription</key>
<string>Camera permission is required for barcode scanning.</string>

在修改完Android和iOS的配置后,在pubspec.yaml中添加flutter_barcode_scanner依赖:

dependencies:
  ...
  flutter_barcode_scanner: ^2.0.0

一次扫描

  1. 首先导入包:
import 'package:flutter_barcode_scanner/flutter_barcode_scanner.dart';
  1. 使用scanBarcode方法来访问条形码扫描功能:
String barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
    COLOR_CODE, 
    CANCEL_BUTTON_TEXT, 
    isShowFlashIcon, 
    scanMode);

在这里的scanBarcode中,

  • COLOR_CODE 是十六进制颜色值,用于设置条形码覆盖层的颜色。
  • CANCEL_BUTTON_TEXT 是屏幕上取消按钮的文本。
  • isShowFlashIcon 是一个布尔值,用于显示或隐藏闪光灯图标。
  • scanMode 是一个枚举值,用户可以选择QRBARCODEDEFAULT。如果不指定,默认值将是QR

注意: 当前scanMode仅用于显示条形码和QR码的图形覆盖层。选择任一模式都会扫描QR码和条形码。

持续扫描

如果你需要持续扫描条形码而不停止摄像头,可以使用getBarcodeStreamReceiver方法: 参数与scanBarcode相同。

例如:

FlutterBarcodeScanner.getBarcodeStreamReceiver("#ff6666", "Cancel", false, ScanMode.DEFAULT)
    .listen((barcode) { 
    /// barcode to be used
});

更多关于Flutter二维码扫描插件flutter_barcode_scanner_fork的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter二维码扫描插件flutter_barcode_scanner_fork的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_barcode_scanner_fork 是一个用于Flutter应用的二维码扫描插件。它是 flutter_barcode_scanner 的一个分支版本,提供了类似的功能,允许开发者在Flutter应用中轻松地集成二维码扫描功能。以下是如何使用 flutter_barcode_scanner_fork 插件的步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_barcode_scanner_fork 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  flutter_barcode_scanner_fork: ^1.0.0+5  # 使用最新版本

然后,运行 flutter pub get 来安装依赖。

2. 导入插件

在需要使用二维码扫描功能的Dart文件中,导入插件:

import 'package:flutter_barcode_scanner_fork/flutter_barcode_scanner_fork.dart';

3. 使用插件进行二维码扫描

你可以使用 FlutterBarcodeScanner.scanBarcode 方法来启动二维码扫描。以下是一个简单的示例:

Future<void> scanBarcode() async {
  String barcodeScanResult;
  try {
    // 启动二维码扫描
    barcodeScanResult = await FlutterBarcodeScanner.scanBarcode(
      '#ff6666',  // 扫描界面的线条颜色
      '取消',      // 取消按钮的文本
      true,       // 是否使用闪光灯
      ScanMode.QR, // 扫描模式,可以是 QR, BARCODE, DEFAULT
    );

    // 处理扫描结果
    if (barcodeScanResult != '-1') {
      print('扫描结果: $barcodeScanResult');
    } else {
      print('扫描取消');
    }
  } catch (e) {
    print('扫描出错: $e');
  }
}

4. 调用扫描方法

你可以在按钮的点击事件中调用 scanBarcode 方法来启动二维码扫描:

ElevatedButton(
  onPressed: scanBarcode,
  child: Text('扫描二维码'),
);

5. 处理权限

在某些平台上(如Android),你可能需要请求相机权限。你可以使用 permission_handler 插件来处理权限请求。

dependencies:
  permission_handler: ^10.0.0  # 使用最新版本

然后在代码中请求权限:

import 'package:permission_handler/permission_handler.dart';

Future<void> requestCameraPermission() async {
  var status = await Permission.camera.status;
  if (!status.isGranted) {
    await Permission.camera.request();
  }
}

在调用 scanBarcode 之前,确保已经请求了相机权限:

await requestCameraPermission();
await scanBarcode();

6. 运行应用

现在,你可以运行你的Flutter应用,并通过点击按钮来扫描二维码。

注意事项

  • iOS 配置: 如果你在iOS上使用该插件,确保在 Info.plist 文件中添加 NSCameraUsageDescription 键,描述应用为何需要访问相机。

    <key>NSCameraUsageDescription</key>
    <string>我们需要访问相机以扫描二维码</string>
    
  • Android 配置: 在 Android 上,确保在 AndroidManifest.xml 文件中添加相机权限:

    <uses-permission android:name="android.permission.CAMERA" />
回到顶部