Flutter NFC读取插件csht_nfc_reader的使用

Flutter NFC读取插件csht_nfc_reader的使用

中软高科 NFC 身份证云解码插件。

使用说明

1. 引入插件

pubspec.yaml 文件中添加依赖:

dependencies:
  csht_nfc_reader: ^0.0.1

2. 添加 NFC 权限

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC" />

3. build.gradle 添加仓库地址

在项目的 build.gradle 文件中添加以下仓库地址:

allprojects {
    repositories {
        // google()
        // mavenCentral()
        maven { url 'https://maven.aliyun.com/repository/google' } // google
        maven { url 'https://maven.aliyun.com/repository/central' } // central
        maven { url 'https://maven.aliyun.com/repository/public' } // jcenter // public
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin'} // gradle-plugin

        // 新增下面两个仓库
        maven { url 'https://gitee.com/cshtzrgk/read-card-sdk/raw/master/Repositorys'}
        maven { url 'https://jitpack.io' }
    }
}

4. 初始化读卡器并调用读卡

首先,在 Dart 文件中引入 NfcReader 类:

import 'package:csht_nfc_reader/nfc_reader.dart';

然后,初始化读卡器并调用读卡功能:

final NfcReader _nfcReader = NfcReader();

// 初始化
_nfcReader.init('xxxxxxx', _onEvent);

// 读卡
_nfcReader.start();

示例代码

以下是完整的示例代码:

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:csht_nfc_reader/nfc_reader.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 NfcReader _nfcReader = NfcReader();

  String text = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    _nfcReader.init('xxxxxxx', _onEvent);
  }

  // 处理 NFC 事件
  _onEvent(data) {
    setState(() {
      text = jsonEncode(data);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text(text),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            _nfcReader.start();
          },
          child: const Icon(Icons.add),
        ),
      ),
    );
  }
}

更多关于Flutter NFC读取插件csht_nfc_reader的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter NFC读取插件csht_nfc_reader的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


csht_nfc_reader 是一个用于在 Flutter 应用中读取 NFC 标签的插件。以下是如何在 Flutter 项目中使用 csht_nfc_reader 插件的基本步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  csht_nfc_reader: ^1.0.0  # 请使用最新版本

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

2. 配置 Android 项目

在 Android 项目中,你需要确保在 AndroidManifest.xml 文件中添加 NFC 权限:

<uses-permission android:name="android.permission.NFC" />

你还需要在 <application> 标签内添加以下内容以启用 NFC 功能:

<uses-feature android:name="android.hardware.nfc" android:required="true" />

3. 配置 iOS 项目

在 iOS 项目中,你需要在 Info.plist 文件中添加以下内容以启用 NFC 功能:

<key>NFCReaderUsageDescription</key>
<string>We need access to NFC to read tags</string>

4. 使用插件读取 NFC 标签

在你的 Flutter 代码中,你可以使用 csht_nfc_reader 插件来读取 NFC 标签。以下是一个简单的示例:

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

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

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

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

class _NFCReaderScreenState extends State<NFCReaderScreen> {
  String _nfcData = "No NFC data read yet";

  Future<void> _startNFCReader() async {
    try {
      String nfcData = await CshtNfcReader.readNfc();
      setState(() {
        _nfcData = nfcData;
      });
    } catch (e) {
      setState(() {
        _nfcData = "Failed to read NFC: $e";
      });
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('NFC Reader'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(_nfcData),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _startNFCReader,
              child: Text('Read NFC'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部