Flutter条形码扫描插件flutter_barcode_scanner_test的使用

Flutter条形码扫描插件flutter_barcode_scanner_test的使用

flutter_barcode_scanner

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

pub package

演示动图

尝试示例

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

入门指南

请根据Android和iOS的步骤进行操作。

请注意仔细遵循iOS步骤

Android

无需担心,你不需要做任何事情。

iOS - 需要Swift支持

部署目标:12

1. 新建项目
  1. 创建一个新的Flutter项目。请检查是否启用了 包含Swift支持用于iOS代码
  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项目(创建时不要忘记勾选 包含Swift支持用于iOS代码)。
  2. 复制新创建的 /ios 文件夹并替换现有的 /ios 文件夹。
  3. 打开ios项目在Xcode中,将最小部署目标设置为12,将Swift版本设置为5。
  4. /ios 文件夹中运行 pod install

注意:如果你之前对iOS部分进行了更改,可能需要重新进行这些配置。

如何使用?

在iOS上使用时,需要添加相机使用描述。为此,请打开Xcode并在 Info.plist 中添加相机使用描述。

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

在修改完Android和iOS之后,将 flutter_barcode_scanner 添加到 pubspec.yaml 文件中:

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 是一个枚举类型,用户可以选择 <QR, BARCODE, DEFAULT> 中的任意一种,默认值为 QR

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

持续扫描

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

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

贡献

非常欢迎贡献,如果喜欢请给项目加星⭐。

联系方式

GitHub
Stack Overflow
LinkedIn

邮箱:amol.gangadhare@gmail.com


完整示例代码

以下是完整的示例代码,展示了一次性扫描和持续扫描的功能。

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_barcode_scanner/flutter_barcode_scanner_test.dart';

void main() => runApp(MyApp());

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _scanBarcode = 'Unknown';

  [@override](/user/override)
  void initState() {
    super.initState();
  }

  Future<void> startBarcodeScanStream() async {
    FlutterBarcodeScanner.getBarcodeStreamReceiver(
            '#ff6666', 'Cancel', true, ScanMode.BARCODE)!
        .listen((barcode) => print(barcode));
  }

  Future<void> scanQR() async {
    String barcodeScanRes;
    // 平台消息可能会失败,因此我们使用try/catch捕获PlatformException。
    try {
      barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
          '#ff6666', 'Cancel', true, ScanMode.QR);
      print(barcodeScanRes);
    } on PlatformException {
      barcodeScanRes = 'Failed to get platform version.';
    }

    // 如果在异步平台消息飞行期间小部件从树中移除,我们希望丢弃响应而不是调用setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _scanBarcode = barcodeScanRes;
    });
  }

  // 平台消息是异步的,因此我们在异步方法中初始化。
  Future<void> scanBarcodeNormal() async {
    String barcodeScanRes;
    // 平台消息可能会失败,因此我们使用try/catch捕获PlatformException。
    try {
      barcodeScanRes = await FlutterBarcodeScanner.scanBarcode(
          '#ff6666', 'Cancel', true, ScanMode.BARCODE);
      print(barcodeScanRes);
    } on PlatformException {
      barcodeScanRes = 'Failed to get platform version.';
    }

    // 如果在异步平台消息飞行期间小部件从树中移除,我们希望丢弃响应而不是调用setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _scanBarcode = barcodeScanRes;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(
            appBar: AppBar(title: const Text('Barcode scan')),
            body: Builder(builder: (BuildContext context) {
              return Container(
                  alignment: Alignment.center,
                  child: Flex(
                      direction: Axis.vertical,
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: <Widget>[
                        ElevatedButton(
                            onPressed: () => scanBarcodeNormal(),
                            child: Text('Start barcode scan')),
                        ElevatedButton(
                            onPressed: () => scanQR(),
                            child: Text('Start QR scan')),
                        ElevatedButton(
                            onPressed: () => startBarcodeScanStream(),
                            child: Text('Start barcode scan stream')),
                        Text('Scan result : $_scanBarcode\n',
                            style: TextStyle(fontSize: 20))
                      ]));
            })));
  }
}

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

1 回复

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


flutter_barcode_scanner_test 是一个用于在 Flutter 应用中扫描条形码的插件。它可以帮助你快速集成条形码扫描功能到你的应用中。以下是如何使用 flutter_barcode_scanner_test 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_barcode_scanner_test: ^1.0.0  # 请根据最新版本号进行更新

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入插件:

import 'package:flutter_barcode_scanner_test/flutter_barcode_scanner_test.dart';

3. 使用插件扫描条形码

你可以使用 FlutterBarcodeScannerTest 类中的 scanBarcode 方法来启动条形码扫描。

void scanBarcode() async {
  String barcodeScanRes;
  // 启动扫描
  try {
    barcodeScanRes = await FlutterBarcodeScannerTest.scanBarcode();
  } catch (e) {
    barcodeScanRes = 'Failed to get barcode: $e';
  }

  // 处理扫描结果
  if (barcodeScanRes != null && barcodeScanRes.isNotEmpty) {
    print('Barcode scanned: $barcodeScanRes');
    // 你可以在这里处理扫描到的条形码数据
  } else {
    print('No barcode scanned.');
  }
}

4. 调用扫描方法

你可以在按钮的 onPressed 事件中调用 scanBarcode 方法,以便用户点击按钮时启动扫描。

ElevatedButton(
  onPressed: () {
    scanBarcode();
  },
  child: Text('Scan Barcode'),
),

5. 处理权限(如果需要)

在某些平台上,扫描条形码可能需要相机权限。你需要在 AndroidManifest.xmlInfo.plist 中添加相应的权限。

Android

android/app/src/main/AndroidManifest.xml 中添加以下权限:

<uses-permission android:name="android.permission.CAMERA" />

iOS

ios/Runner/Info.plist 中添加以下权限:

<key>NSCameraUsageDescription</key>
<string>We need access to your camera to scan barcodes</string>
回到顶部