Flutter银行卡识别插件flutter_paycardsrecognizer_sdk的使用

Flutter银行卡识别插件flutter_paycardsrecognizer_sdk的使用

Flutter库用于通过Android/IOS设备上的内置摄像头自动识别银行卡数据。

安装

pubspec.yaml文件中添加flutter_paycardsrecognizer_sdk库。

dependencies:
  flutter:
    sdk: flutter

  flutter_paycardsrecognizer_sdk: ^x.y.z

使用

示例代码

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_paycardsrecognizer_sdk/flutter_paycardsrecognizer_sdk.dart';

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  PayCardInfo? _payCardInfo;

  @override
  void initState() {
    super.initState();
    // 初始化状态
  }

  // 平台消息是异步的,所以我们在一个异步方法中初始化。
  Future<void> initPlatformState() async {
    PayCardInfo? platformVersion;
    // 平台消息可能会失败,所以我们使用try/catch处理PlatformException。
    // 我们还处理消息可能返回null的情况。
    try {
      platformVersion = await FlutterPayCardsRecognizerSdk.newInstance().scanCard();
    } on PlatformException {
      // platformVersion = 'Failed to get platform version.';
    }

    // 如果小部件从树中被移除,而异步平台消息仍在飞行,则我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
    if (!mounted) return;

    setState(() {
      _payCardInfo = platformVersion;
    });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Column(
            children: [
              Text('运行于: ${_payCardInfo?.toString() ?? 'NONE'}\n'),
              ElevatedButton(
                onPressed: () {
                  initPlatformState();
                },
                child: Text('识别卡片'),
              )
            ],
          ),
        ),
      ),
    );
  }
}

许可证

Apache 2.0 License

Copyright 2021 Sergey Penkovsky <sergey.penkovsky@gmail.com>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

更多关于Flutter银行卡识别插件flutter_paycardsrecognizer_sdk的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter银行卡识别插件flutter_paycardsrecognizer_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中集成和使用flutter_paycardsrecognizer_sdk插件的示例代码。这个插件主要用于银行卡识别功能。

第一步:添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_paycardsrecognizer_sdk: ^最新版本号  # 请替换为实际的最新版本号

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

第二步:配置权限

在Android的AndroidManifest.xml文件中添加必要的权限,例如相机权限,因为银行卡识别通常需要拍照或扫描。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.yourapp">

    <uses-permission android:name="android.permission.CAMERA" />
    <!-- 如果需要存储图片,还需要添加读写存储权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

    <application
        ... >
        ...
    </application>
</manifest>

在iOS的Info.plist文件中添加相机使用描述。

<key>NSCameraUsageDescription</key>
<string>App needs access to the camera to scan bank cards.</string>

第三步:请求权限并初始化插件

在你的Flutter代码中,请求相机权限并初始化flutter_paycardsrecognizer_sdk插件。

import 'package:flutter/material.dart';
import 'package:flutter_paycardsrecognizer_sdk/flutter_paycardsrecognizer_sdk.dart';
import 'package:permission_handler/permission_handler.dart';

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

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

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  FlutterPaycardsRecognizerController? _controller;

  @override
  void initState() {
    super.initState();
    _initController();
    _requestPermissions();
  }

  void _initController() {
    _controller = FlutterPaycardsRecognizerController();
    // You can configure the controller here if needed
  }

  Future<void> _requestPermissions() async {
    var status = await Permission.camera.status;
    if (!status.isGranted) {
      var result = await Permission.camera.request();
      if (!result.isGranted) {
        // Permission request was denied
        showDialog(
          context: context,
          builder: (context) {
            return AlertDialog(
              title: Text('Permission Denied'),
              content: Text('Camera permission is required to scan bank cards.'),
              actions: <Widget>[
                TextButton(
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                  child: Text('OK'),
                ),
              ],
            );
          },
        );
      }
    }
  }

  Future<void> _startRecognition() async {
    if (_controller != null) {
      try {
        var result = await _controller!.startRecognition();
        // Process the result, which contains the card details
        print('Card Details: ${result.toJson()}');
      } catch (e) {
        print('Error during card recognition: $e');
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bank Card Recognition'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _startRecognition,
          child: Text('Scan Bank Card'),
        ),
      ),
    );
  }

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

注意事项

  1. 权限处理:上述代码中使用了permission_handler插件来处理权限请求,你需要在pubspec.yaml中添加这个依赖。
dependencies:
  permission_handler: ^最新版本号  # 请替换为实际的最新版本号
  1. 错误处理:在实际项目中,请添加更多的错误处理逻辑,以处理各种可能的异常情况。

  2. UI设计:上述示例中的UI非常简单,你可以根据实际需求进行自定义设计。

  3. 插件更新:由于插件可能会更新,请参考最新的插件文档和示例代码,以确保代码的正确性和功能完整性。

这样,你就可以在Flutter项目中集成并使用flutter_paycardsrecognizer_sdk插件进行银行卡识别了。

回到顶部