Flutter二维码扫描插件iz_scan的使用

发布于 1周前 作者 htzhanglong 来自 Flutter

Flutter二维码扫描插件iz_scan的使用

IZScan Flutter 插件简介

IZScan 是一个 Flutter 插件,旨在简化将信用卡/借记卡扫描功能集成到移动应用程序中的过程。该插件简化了卡片信息的捕获,使得在各种金融和支付相关应用中实现安全高效的卡片扫描功能变得容易。

平台支持

平台 支持情况
Android
iOS
macOS
Web
Linux
Windows

入门指南

要开始在您的 Flutter 项目中使用 IZScan,请按照以下步骤操作:

  1. 添加依赖项:在 pubspec.yaml 文件中添加 IZScan 依赖项:

    dependencies:
      iz_scan: ^0.0.1
    

    请确保检查 pub.dev 上的最新版本。

  2. 安装包:运行以下命令以安装包:

    flutter pub get
    
  3. iOS 配置:在 app/ios 文件夹下运行 pod install

  4. 导入 IZScan 包:在 Dart 代码中导入 IZScan 包:

    import 'package:iz_scan/iz_scan.dart';
    

使用示例

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 IZScan 进行二维码扫描。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'IZScanExample',
      home: IZScanExampleScreen(),
    );
  }
}

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

  @override
  _IZScanExampleScreenState createState() => _IZScanExampleScreenState();
}

class _IZScanExampleScreenState extends State<IZScanExampleScreen> {
  final ValueNotifier<CardInfoModel?> _cardInfo = ValueNotifier(null);
  late StreamSubscription<CardInfoModel?> _streamSubscription;

  @override
  void initState() {
    super.initState();

    // 订阅卡片扫描流
    _streamSubscription = IZScan.cardScanStream.listen(
      (cardStreamInfo) {
        if (cardStreamInfo != null) {
          _cardInfo.value = cardStreamInfo;
        }
      },
      onError: (error) {
        if (kDebugMode) {
          print('Error during card scan: $error');
        }
      },
    );
  }

  @override
  void dispose() {
    // 取消流订阅
    _streamSubscription.cancel();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('IZScan Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () async {
                // 启动卡片扫描
                await IZScan.startCardScan();
              },
              child: const Text('Start Card Scan'),
            ),
            const SizedBox(height: 20),
            ValueListenableBuilder<CardInfoModel?>(
              valueListenable: _cardInfo,
              builder: (context, cardInfo, child) {
                if (cardInfo == null) {
                  return const Text('No card scanned yet');
                } else {
                  return Column(
                    children: [
                      Text('Card Number: ${cardInfo.cardNumber}'),
                      Text('Card Holder Name: ${cardInfo.cardHolderName}'),
                      Text('Expiration Date: ${cardInfo.expirationDate}'),
                      Text('CVV: ${cardInfo.cvv}'),
                    ],
                  );
                }
              },
            ),
          ],
        ),
      ),
    );
  }
}

平台特定要求

Android
  • 最低 SDK 版本minSdkVersion 21 或更高。

  • 权限配置:确保在 AndroidManifest.xml 文件中添加以下权限:

    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.FLASHLIGHT"/>
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-feature android:name="android.hardware.camera" android:required="false" />
    <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" />
    
  • 依赖项配置:在 android/build.gradle 文件中添加以下依赖项:

    dependencies {
      implementation 'com.getbouncer:cardscan-ui:2.1.0004'
      implementation 'com.getbouncer:tensorflow-lite:2.1.0004'
      implementation "com.getbouncer:scan-payment-full:2.1.0004"
    }
    
iOS
  • 最低 iOS 版本:13.0 或更高。
  • 权限配置:在 Info.plist 文件中添加以下条目:
    <key>NSCameraUsageDescription</key>
    <string>我们需要访问您的相机以扫描信用卡/借记卡。</string>
    

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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用二维码扫描插件 iz_scan 的示例代码。假设你已经有一个Flutter项目,并且想要添加二维码扫描功能。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  iz_scan: ^最新版本号  # 请替换为最新版本号

运行 flutter pub get 以获取依赖。

2. 导入包

在你的 Dart 文件中导入 iz_scan 包:

import 'package:iz_scan/iz_scan.dart';

3. 配置权限

AndroidManifest.xml 中添加摄像头权限:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />

对于 iOS,你需要在 Info.plist 中添加摄像头权限描述:

<key>NSCameraUsageDescription</key>
<string>需要访问相机以扫描二维码</string>

4. 实现二维码扫描功能

下面是一个简单的示例,展示如何使用 iz_scan 插件进行二维码扫描:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ScanPage(),
    );
  }
}

class ScanPage extends StatefulWidget {
  @override
  _ScanPageState createState() => _ScanPageState();
}

class _ScanPageState extends State<ScanPage> {
  String result = "";

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("二维码扫描"),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Expanded(
            child: IzScan(
              onScanSuccess: (scanResult) {
                setState(() {
                  result = scanResult;
                });
                // 可以在这里处理扫描结果,比如导航到其他页面
                // Navigator.push(context, MaterialPageRoute(builder: (context) => ResultPage(scanResult)));
              },
              options: IzScanOptions(
                beepEnable: true, // 扫描成功是否发出声音
                autoFocus: true, // 是否自动聚焦
                resultDisplayDuration: 2000, // 扫描结果显示时间
                scanArea: 250, // 扫描区域大小
                scanLineColor: Colors.red, // 扫描线颜色
                scanLineAnimDuration: 1000, // 扫描线动画持续时间
                orientation: IzScanOrientation.portrait, // 扫描方向
              ),
            ),
          ),
          Text(
            "扫描结果: $result",
            style: TextStyle(fontSize: 20),
          ),
        ],
      ),
    );
  }
}

5. 运行应用

确保你的设备或模拟器上已启用摄像头权限,然后运行应用。你应该能看到一个二维码扫描界面,扫描二维码后,扫描结果会显示在页面上。

这个示例展示了如何使用 iz_scan 插件进行基本的二维码扫描。你可以根据需求进一步自定义扫描选项和界面。

回到顶部