Flutter条码扫描插件zebra_scan_datawedge的使用

Flutter条码扫描插件zebra_scan_datawedge的使用

ZebraDataWedge插件

ZebraDataWedge 插件是一个用于与 Zebra 的 DataWedge 进行交互的 Flutter 接口,使你能够创建和配置 DataWedge 配置文件,控制扫描过程,启用或禁用 DataWedge 功能,并通过流获取扫描数据。

特性

  • 创建DataWedge配置文件:轻松创建新的DataWedge配置文件,并自定义配置文件名称。
  • 启动和停止扫描:通过编程方式控制扫描过程。
  • 启用或禁用DataWedge:在Zebra设备上切换DataWedge功能。
  • 获取扫描数据流:通过流实时获取扫描数据。

安装

在你的 pubspec.yaml 文件中添加插件:

dependencies:
  zebra_datawedge: ^1.0.0 # 替换为实际版本

然后安装包:

flutter pub get

使用

导入包

import 'package:zebra_datawedge/zebra_datawedge.dart';

初始化插件

创建 ZebraDataWedge 类的一个实例:

final zebraDataWedge = ZebraDataWedge();

方法

1. createDataWedgeProfile

创建一个新的DataWedge配置文件并指定名称。

await zebraDataWedge.createDataWedgeProfile(profileName: "CustomProfileName");
  • 参数
    • profileName(可选):配置文件的名称。默认值为 "TejasGProdInternal_2"

2. getStreamOfData

一个提供最新扫描数据的流。

zebraDataWedge.getStreamOfData.listen((scannedData) {
  print("Scanned Data: $scannedData");
});

3. startScan

启动扫描过程。

await zebraDataWedge.startScan();

4. stopScan

停止扫描过程。

await zebraDataWedge.stopScan();

5. initialized

初始化DataWedge并开始监听流。

zebraDataWedge.initialized();

6. disableDataWedge

在设备上禁用DataWedge。

await zebraDataWedge.disableDataWedge();

7. enableDataWedge

在设备上启用DataWedge。

await zebraDataWedge.enableDataWedge();

示例

以下是一个完整的示例代码:

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

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final zebraSdk = ZebraDataWedge();

  [@override](/user/override)
  void initState() {
    super.initState();
    zebraSdk.initialized();
    zebraSdk.createDataWedgeProfile(profileName: "TejasG_Prod");
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Zebra SDK Plugin'),
        ),
        body: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Container(
              margin: const EdgeInsets.all(20),
              decoration: BoxDecoration(
                  color: Colors.white,
                  borderRadius: BorderRadius.circular(20),
                  border: Border.all(color: Colors.grey)),
              child: Column(
                children: [
                  Padding(
                    padding: const EdgeInsets.all(20.0),
                    child: Center(
                      child: StreamBuilder(
                          stream: zebraSdk.getStreamOfData,
                          builder: (context, snap) {
                            if (snap.hasData) {
                              return Text(
                                snap.data ?? "No Data Available",
                                style: const TextStyle(
                                    fontWeight: FontWeight.bold),
                              );
                            } else {
                              return const Text(
                                "Scan new data...",
                                style: TextStyle(
                                    fontWeight: FontWeight.normal,
                                    color: Colors.grey),
                              );
                            }
                          }),
                    ),
                  ),
                  const Divider(
                    height: 1,
                  ),
                  Row(
                    mainAxisAlignment: MainAxisAlignment.spaceAround,
                    children: [
                      Column(
                        children: [
                          TextButton(
                              onPressed: zebraSdk.startScan,
                              child: const Text("Start Scan")),
                          TextButton(
                              onPressed: zebraSdk.stopScan,
                              child: const Text("Stop Scan")),
                        ],
                      ),
                      Column(
                        children: [
                          TextButton(
                              onPressed: zebraSdk.disableDataWedge,
                              child: const Text("Disable Data Wedge")),
                          TextButton(
                              onPressed: zebraSdk.enableDataWedge,
                              child: const Text("Enable Data Wedge")),
                        ],
                      )
                    ],
                  )
                ],
              ),
            )
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


zebra_scan_datawedge 是一个用于在 Flutter 应用中与 Zebra 设备上的 DataWedge 服务进行交互的插件。DataWedge 是 Zebra 设备上的一个服务,用于处理条码扫描和其他数据输入。通过 zebra_scan_datawedge 插件,你可以轻松地在 Flutter 应用中集成条码扫描功能。

1. 安装插件

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

dependencies:
  flutter:
    sdk: flutter
  zebra_scan_datawedge: ^0.0.1  # 请检查最新版本

然后运行 flutter pub get 来安装插件。

2. 配置 DataWedge

在使用插件之前,你需要在 Zebra 设备上配置 DataWedge 以将扫描的数据发送到你的 Flutter 应用。

  1. 打开 DataWedge 应用程序。
  2. 创建一个新的配置文件或使用现有配置文件。
  3. 在“输出插件”中,选择“Intent 输出”。
  4. 设置 Intent 操作的格式为 com.your.package.name.SCAN(将 com.your.package.name 替换为你的应用包名)。
  5. 设置 Intent 类别为 android.intent.category.DEFAULT
  6. 设置 Intent 数据为 text/plain
  7. 确保启用了“发送解码数据”选项。

3. 在 Flutter 中使用插件

3.1 初始化插件

在你的 Flutter 应用中,首先需要初始化 zebra_scan_datawedge 插件。

import 'package:zebra_scan_datawedge/zebra_scan_datawedge.dart';

void main() {
  runApp(MyApp());
}

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

class _MyAppState extends State<MyApp> {
  ZebraScanDataWedge _zebraScanDataWedge;

  [@override](/user/override)
  void initState() {
    super.initState();
    _zebraScanDataWedge = ZebraScanDataWedge();
    _initializeScanner();
  }

  void _initializeScanner() async {
    try {
      await _zebraScanDataWedge.initialize();
      _zebraScanDataWedge.scanDataStream.listen((scanData) {
        // 处理扫描到的数据
        print('Scanned Data: $scanData');
      });
    } catch (e) {
      print('Failed to initialize scanner: $e');
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Zebra Scanner Example'),
        ),
        body: Center(
          child: Text('Scan a barcode'),
        ),
      ),
    );
  }
}

3.2 处理扫描数据

在上面的代码中,_zebraScanDataWedge.scanDataStream 是一个 Stream,它会发出每次扫描到的数据。你可以通过监听这个 Stream 来处理扫描到的条码数据。

3.3 销毁插件

当你的应用不再需要扫描功能时,应该销毁插件以释放资源。

[@override](/user/override)
void dispose() {
  _zebraScanDataWedge.dispose();
  super.dispose();
}
回到顶部