Flutter文本数据捕获插件scanflow_datacapture_text的使用

Flutter文本数据捕获插件scanflow_datacapture_text的使用

scanflow_datacapture_text

开始使用

一个为Flutter提供的扫描器小部件插件。

支持Android SDK 21及以上版本。


安装

要使用此插件,只需在项目的pubspec.yaml文件中添加scanflow_datacapture_text作为依赖项。

导入到项目中

import 'package:scanflow_datacapture_text/text_capture.dart';

Android配置

  1. android/app/build.gradle中设置minSdkVersiontargetSdkVersion: 这意味着应用程序将仅对运行Android SDK 21或更高版本的用户可用。
defaultConfig {
   ...
    minSdkVersion 21
    targetSdkVersion 30
}
  1. 确保在android/app/src/main/AndroidManifest.xml中包含FlutterEmbedding v2:
<meta-data
    android:name="flutterEmbedding"
    android:value="2" />

iOS配置

Info.plist

为了获取库当前状态的数据,您的应用需要互联网连接和相机权限。因此,请确保已在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

使用方法

以下是如何在Flutter中使用scanflow_datacapture_text插件的示例:

创建回调处理器

首先,创建一个TextScanResultCallbackHandler实例来处理扫描结果。

TextScanResultCallbackHandler callbackHandler = TextScanResultCallbackHandler();

注册回调

将此小部件注册为回调处理器。

// 注册回调
callbackHandler.registerCallback(this);

使用TextCapture小部件

接下来,使用TextCapture小部件来实现扫描功能。

TextCapture(
  licenseKey: '<your_license_key>', // 替换为实际的许可证密钥
  scanType: '<text_scan_type>',     // 替换为实际的文本扫描类型
  isBeepSound: true,                // 是否启用哔声提示
  isVibrate: true,                  // 是否启用振动反馈
  flashLight: true,                 // 是否启用闪光灯
  isAutoExposure: true,             // 是否启用自动曝光
  isAutoZoom: true,                 // 是否启用自动缩放
  isOneTouchZoom: true,             // 是否启用单击缩放按钮
  resolution: 'high',               // 设置相机分辨率(例如 high 或 low)
  textScanResultBackHandler: callbackHandler, // 回调处理器
),

生成许可证密钥

  1. 您需要一个许可证密钥才能在应用程序中使用Scanflow SDK。
  2. 您必须确定Android应用的应用程序ID和iOS应用的bundle ID,以生成应用程序的许可证密钥。
  3. 每个许可证都是根据应用程序ID/bundle ID生成的。如果更改了应用程序ID/bundle ID,则必须生成新的许可证密钥。请注意,您不能与其他开发人员共享您的许可证密钥。

购买许可证密钥

  1. 如果您还没有账户,请访问https://console.scanflow.ai/创建一个免费测试账户。
  2. 访问https://console.scanflow.ai/login登录您的账户。
  3. 单击“创建原生SDK许可证密钥”,并输入项目的bundle ID(如果您还没有应用程序的许可证密钥)。
  4. 复制生成的许可证密钥。

更多信息

有关更多详细信息,请参阅官方文档:
https://www.scanflow.ai/developer/


完整示例代码

以下是完整的示例代码,展示如何在Flutter中使用scanflow_datacapture_text插件:

import 'package:flutter/material.dart';
import 'package:scanflow_datacapture_text/text_capture.dart';

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

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

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

class _ScanFlowDemoState extends State<ScanFlowDemo> {
  TextScanResultCallbackHandler callbackHandler = TextScanResultCallbackHandler();

  [@override](/user/override)
  void initState() {
    super.initState();
    // 注册回调
    callbackHandler.registerCallback(this);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Scanflow Data Capture Text'),
      ),
      body: Center(
        child: TextCapture(
          licenseKey: '<your_license_key>', // 替换为实际的许可证密钥
          scanType: 'text',                 // 文本扫描类型
          isBeepSound: true,                // 启用哔声提示
          isVibrate: true,                  // 启用振动反馈
          flashLight: true,                 // 启用闪光灯
          isAutoExposure: true,             // 启用自动曝光
          isAutoZoom: true,                 // 启用自动缩放
          isOneTouchZoom: true,             // 启用单击缩放按钮
          resolution: 'high',               // 设置相机分辨率
          textScanResultBackHandler: callbackHandler, // 回调处理器
        ),
      ),
    );
  }
}

更多关于Flutter文本数据捕获插件scanflow_datacapture_text的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter文本数据捕获插件scanflow_datacapture_text的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


scanflow_datacapture_text 是一个用于在 Flutter 应用中捕获文本数据的插件。它可以帮助开发者轻松地从图像或摄像头中提取文本信息。以下是使用 scanflow_datacapture_text 插件的基本步骤和相关代码示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  scanflow_datacapture_text: ^1.0.0  # 请根据实际版本号进行替换

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

2. 导入插件

在需要使用 scanflow_datacapture_text 的 Dart 文件中导入插件。

import 'package:scanflow_datacapture_text/scanflow_datacapture_text.dart';

3. 初始化插件

在使用插件之前,需要对其进行初始化。通常可以在 initState 方法中进行初始化。

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

class _MyAppState extends State<MyApp> {
  ScanflowDatacaptureText _scanflowDatacaptureText;

  [@override](/user/override)
  void initState() {
    super.initState();
    _scanflowDatacaptureText = ScanflowDatacaptureText();
    _scanflowDatacaptureText.initialize();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Text Data Capture'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _captureText,
            child: Text('Capture Text'),
          ),
        ),
      ),
    );
  }
}

4. 捕获文本

你可以通过调用 captureText 方法来捕获文本。这个方法通常会返回一个包含文本数据的对象。

void _captureText() async {
  try {
    var result = await _scanflowDatacaptureText.captureText();
    if (result != null) {
      print('Captured Text: $result');
      // 处理捕获到的文本数据
    } else {
      print('No text captured.');
    }
  } catch (e) {
    print('Error capturing text: $e');
  }
}

5. 处理捕获的文本

捕获到的文本数据可以根据你的需求进行处理。例如,你可以将其显示在 UI 上,或者将其保存到数据库中。

void _captureText() async {
  try {
    var result = await _scanflowDatacaptureText.captureText();
    if (result != null) {
      setState(() {
        _capturedText = result;
      });
    } else {
      setState(() {
        _capturedText = 'No text captured.';
      });
    }
  } catch (e) {
    setState(() {
      _capturedText = 'Error capturing text: $e';
    });
  }
}

String _capturedText = '';

[@override](/user/override)
Widget build(BuildContext context) {
  return MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('Text Data Capture'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _captureText,
              child: Text('Capture Text'),
            ),
            SizedBox(height: 20),
            Text('Captured Text: $_capturedText'),
          ],
        ),
      ),
    ),
  );
}

6. 权限处理

在某些情况下,捕获文本可能需要访问摄像头或存储权限。确保在 AndroidManifest.xmlInfo.plist 中添加必要的权限声明,并在运行时请求权限。

7. 处理异常

在实际使用中,可能会遇到各种异常情况,例如权限被拒绝、设备不支持等。确保在代码中妥善处理这些异常,并提供友好的用户提示。

8. 释放资源

在不需要使用插件时,可以调用 dispose 方法来释放相关资源。

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