Flutter条码扫描插件flutter_scandit的使用

Flutter条码扫描插件flutter_scandit的使用

简介

Flutter Scandit 是一个用于在 Flutter 应用中集成 Scandit 条码扫描功能的插件。Scandit 提供了强大的条码扫描能力,支持多种条码类型,并且可以在 Android 和 iOS 平台上运行。

Pub Package

注意事项

⚠️ 维护公告 ⚠️
这是一个非官方项目,不再处于积极维护状态。Scandit 现已推出官方 Flutter 支持,建议查看以下资源:

开始使用

要开始使用 flutter_scandit 插件,请检查 示例目录 中的示例应用。

功能

  • 扫描条形码(Barcode)

支持的平台

  • Android
  • iOS

安装

首先,在 pubspec.yaml 文件中添加 flutter_scandit 作为依赖项。

dependencies:
  flutter_scandit: ^版本号

然后运行 flutter pub get 更新依赖。

iOS 配置

ios/Runner/Info.plist 文件中添加以下配置:

<key>NSCameraUsageDescription</key>
<string>允许使用相机进行扫描</string>

最低支持的 iOS 版本为 9.0。

Android 配置

确保 minSdkVersion 至少为 19:

minSdkVersion 19

示例代码

以下是一个完整的示例代码,展示如何使用 flutter_scandit 插件扫描条形码。

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

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

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

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

class _BarcodeScanPageState extends State<BarcodeScanPage> {
  BarcodeResult barcode; // 存储扫描结果

  // 显示错误信息
  Future<void> _showError(BuildContext context, String errorMessage) {
    return showDialog<void>(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: Text('条码扫描错误'),
          content: Text(errorMessage ?? "未知错误"),
          actions: <Widget>[
            FlatButton(
              child: Text('确定'),
              onPressed: () {
                Navigator.of(context).pop();
              },
            ),
          ],
        );
      },
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Scandit 示例应用'),
      ),
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 扫描按钮
            RaisedButton(
              onPressed: () async {
                try {
                  // 调用 Scandit 扫描条码
                  BarcodeResult result = await FlutterScandit(
                    symbologies: [
                      Symbology.EAN13_UPCA, // 支持 EAN13 和 UPC-A
                      Symbology.CODE128,     // 支持 CODE128
                    ],
                    licenseKey: "-- ENTER YOUR SCANDIT LICENSE KEY HERE --", // 替换为你的 Scandit 许可证密钥
                  ).scanBarcode();

                  // 更新 UI
                  setState(() {
                    barcode = result;
                  });
                } on BarcodeScanException catch (e) {
                  // 捕获并显示错误
                  _showError(context, e.toString());
                }
              },
              child: Text('扫描'),
            ),
            SizedBox(height: 32),
            // 显示扫描结果
            barcode != null
                ? Text('${barcode.data} ${barcode.symbology}') // 打印条码数据和类型
                : Text('请扫描一个条形码...'), // 默认提示
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_scandit 是一个用于在 Flutter 应用中集成 Scandit 条码扫描功能的插件。Scandit 是一个强大的条码扫描 SDK,支持多种条码类型,并且具有高扫描速度和准确性。以下是如何在 Flutter 项目中使用 flutter_scandit 插件的步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_scandit: ^3.0.0  # 请根据最新版本进行替换

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

2. 获取 Scandit 许可证密钥

要使用 Scandit SDK,你需要一个有效的许可证密钥。你可以从 Scandit 官网 注册并获取许可证密钥。

3. 初始化 Scandit

在你的 Dart 代码中初始化 Scandit,并设置许可证密钥。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // 初始化 Scandit
  await FlutterScandit.initialize('YOUR_SCANDIT_LICENSE_KEY');

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Scandit Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: BarcodeScannerScreen(),
    );
  }
}

4. 创建条码扫描界面

接下来,创建一个用于显示条码扫描界面的页面。你可以使用 ScanditBarcodePicker 来启动扫描器。

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

class _BarcodeScannerScreenState extends State<BarcodeScannerScreen> {
  String _barcodeResult = 'Scan a barcode';

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Barcode Scanner'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(_barcodeResult),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _startBarcodeScan,
              child: Text('Start Scan'),
            ),
          ],
        ),
      ),
    );
  }

  void _startBarcodeScan() async {
    // 启动 Scandit 扫描器
    final result = await FlutterScandit.scanBarcode();

    if (result != null) {
      setState(() {
        _barcodeResult = 'Scanned: $result';
      });
    } else {
      setState(() {
        _barcodeResult = 'Scan cancelled';
      });
    }
  }
}
回到顶部