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

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

scanflow_datacapture_barcode

开始使用

scanflow_datacapture_barcode 是一个为 Flutter 提供条形码扫描功能的插件。

支持 Android SDK 21 及以上版本。


安装

pubspec.yaml 文件中添加 scanflow_datacapture_barcode 作为依赖项:

dependencies:
  scanflow_datacapture_barcode: ^版本号

然后在项目中导入以下库:

import 'package:scanflow_datacapture_barcode/lib/barcode_capture.dart';
import 'package:scanflow_datacapture_barcode/lib/models/batch_scan_result.dart';
import 'package:scanflow_datacapture_barcode/lib/models/one_of_many_result.dart';
import 'package:scanflow_datacapture_barcode/lib/models/scan_result_success.dart';

Android 配置

  1. android/app/build.gradle 中设置 minSdkVersiontargetSdkVersion
defaultConfig {
   ...
    minSdkVersion 21
    targetSdkVersion 30
}
  1. 确保在 AndroidManifest.xml 中包含 FlutterEmbedding v2:
<meta-data
    android:name="flutterEmbedding"
    android:value="2" />

iOS 配置

Info.plist 中添加相机权限描述:

Key : Privacy - Camera Usage Description
Value : $(PRODUCT_NAME) camera use
Key : Privacy - Location Always and When In Use Usage Description
Value : $(PRODUCT_NAME) location access

使用方法

以下是一个完整的使用示例:

import 'package:flutter/material.dart';
import 'package:scanflow_datacapture_barcode/lib/barcode_capture.dart';
import 'package:scanflow_datacapture_barcode/lib/models/scan_result_success.dart';

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: BarcodeScannerPage(),
    );
  }
}

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

class _BarcodeScannerPageState extends State<BarcodeScannerPage> {
  BarcodeScanResultCallbackHandler callbackHandler;

  [@override](/user/override)
  void initState() {
    super.initState();
    callbackHandler = BarcodeScanResultCallbackHandler();
    callbackHandler.registerCallback(this);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('条形码扫描')),
      body: Center(
        child: BarcodeCapture(
          licenseKey: '<你的许可证密钥>', // 替换为实际的许可证密钥
          scanType: BarcodeScanType.all, // 扫描类型(例如:一维码、二维码等)
          barcodeScanResultBackHandler: callbackHandler,
          isBeepSound: true, // 是否开启提示音
          isVibrate: true, // 是否开启震动
          flashLight: true, // 是否开启闪光灯
          isAutoExposure: true, // 是否自动曝光
          isAutoZoom: true, // 是否自动变焦
          isOneTouchZoom: true, // 是否显示一键缩放按钮
          resolution: CameraResolution.high, // 摄像头分辨率
        ),
      ),
    );
  }

  // 处理扫描结果
  void handleScanResult(ScanResultSuccess result) {
    print('扫描成功: ${result.barcodeData}');
  }
}

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

1 回复

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


scanflow_datacapture_barcode 是一个 Flutter 插件,用于在 Flutter 应用中实现条形码扫描功能。它通常与 Scandit 的数据捕获 SDK 集成,提供了高效的条形码扫描功能。以下是如何在 Flutter 项目中使用 scanflow_datacapture_barcode 插件的基本步骤。

1. 添加依赖

首先,在你的 pubspec.yaml 文件中添加 scanflow_datacapture_barcode 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  scanflow_datacapture_barcode: ^latest_version

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

2. 初始化插件

在你的 Dart 代码中,首先需要初始化 scanflow_datacapture_barcode 插件。通常,你可以在 main.dart 文件中进行初始化。

import 'package:flutter/material.dart';
import 'package:scanflow_datacapture_barcode/scanflow_datacapture_barcode.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化插件
  await ScanflowDataCaptureBarcode.initialize();
  
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Barcode Scanner',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BarcodeScannerScreen(),
    );
  }
}

3. 创建扫描界面

接下来,创建一个用于显示扫描界面的页面。你可以使用 ScanflowDataCaptureBarcode 提供的 BarcodeScannerWidget 来显示扫描界面。

import 'package:flutter/material.dart';
import 'package:scanflow_datacapture_barcode/scanflow_datacapture_barcode.dart';

class BarcodeScannerScreen extends StatefulWidget {
  @override
  _BarcodeScannerScreenState createState() => _BarcodeScannerScreenState();
}

class _BarcodeScannerScreenState extends State<BarcodeScannerScreen> {
  late BarcodeScannerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = BarcodeScannerController();
    _controller.onBarcodeScanned.listen((barcode) {
      // 处理扫描到的条形码
      print('Scanned Barcode: $barcode');
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Barcode Scanner'),
      ),
      body: BarcodeScannerWidget(
        controller: _controller,
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}

4. 处理扫描结果

_BarcodeScannerScreenState 类中,我们通过 _controller.onBarcodeScanned.listen 来监听扫描到的条形码。你可以在这个回调中处理扫描到的条形码数据。

5. 运行应用

现在,你可以运行你的 Flutter 应用,并测试条形码扫描功能。

flutter run

6. 其他配置

根据你的需求,你可能需要配置一些扫描参数,如扫描的条形码类型、扫描区域等。你可以通过 BarcodeScannerController 进行配置。

_controller.setSymbologies([Symbology.code128, Symbology.ean13]);
_controller.setScanArea(Rect.fromLTWH(0.1, 0.1, 0.8, 0.8));
回到顶部