Flutter NFC Reader

一款新的 Flutter 插件,旨在帮助开发者使用 iOS 或 Android 设备中的内部硬件读取 NFC 标签。

该系统会激活一个轮询读取会话,一旦识别到标签就会自动停止。您也可以使用专用函数手动触发停止事件。

安装

添加到 pubspec.yaml

dependencies:
  flutter_nfc_reader:
    git:
      url: git://github.com/matteocrippa/flutter-nfc-reader.git
      ref: master

然后运行shell

flutter packages get

最后一步,导入到项目中

import 'package:flutter_nfc_reader/flutter_nfc_reader.dart';

如何使用

Android 设置

将这两行添加到您的 AndroidManifest.xml 文件顶部

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

iOS 设置

目前仅支持基于 Swift 的 Flutter 项目。

  • 启用功能 / 近场通信标签读取。
  • Info.plist 文件,添加 Privacy - NFC Scan Usage Description,值为 NFC Tag。

读取 NFC

此函数将在发生读取时返回一个 Promise,在那之前读取会话一直保持打开状态。
Promise 将返回一个 NfcData 模型,该模型包含:

  • id > 标签的 ID
  • content > 标签的内容
  • error > 如果发生任何错误
Future<void> startNFC() async {
    NfcData response;

    setState(() {
      _nfcData = NfcData();
      _nfcData.status = NFCStatus.reading;
    });

    print('NFC: Scan started');

    try {
      print('NFC: Scan readed NFC tag');
      response = await FlutterNfcReader.read;
    } on PlatformException {
      print('NFC: Scan stopped exception');
    }
    setState(() {
      _nfcData = response;
    });
  }

停止 NFC

Future<void> stopNFC() async {
    NfcData response;

    try {
      print('NFC: Stop scan by user');
      response = await FlutterNfcReader.stop;
    } on PlatformException {
      print('NFC: Stop scan exception');
      response = NfcData(
        id: '',
        content: '',
        error: 'NFC scan stop exception',
        statusMapper: '',
      );
      response.status = NFCStatus.error;
      ;
    }

    setState(() {
      _nfcData = response;
    });
  }

更多详细信息请查看演示应用。

GitHub

https://github.com/matteocrippa/flutter-nfc-reader