Flutter如何使用flutter_nfc_kit插件
在Flutter项目中使用flutter_nfc_kit插件时遇到了一些问题。我已经按照文档添加了依赖并配置了AndroidManifest.xml,但当调用NfcProvider.read()时总是返回"未检测到NFC设备"。手机本身支持NFC功能,并且已经开启。请问还需要哪些额外配置?iOS和Android的处理方式是否不同?能否提供一个完整的读取NFC标签的代码示例?
2 回复
使用 flutter_nfc_kit 插件在 Flutter 中操作 NFC 的步骤如下:
-
添加依赖:在
pubspec.yaml中添加:dependencies: flutter_nfc_kit: ^4.0.0运行
flutter pub get。 -
配置权限(仅 Android): 在
AndroidManifest.xml中添加:<uses-permission android:name="android.permission.NFC" /> -
基本使用:
import 'package:flutter_nfc_kit/flutter_nfc_kit.dart'; // 检查 NFC 可用性 bool available = await FlutterNfcKit.nfcAvailability; // 开始 NFC 会话 var tag = await FlutterNfcKit.poll( timeout: const Duration(seconds: 10) ); // 读取 NDEF 记录(如果有) if (tag.ndefAvailable) { var records = await FlutterNfcKit.readNDEFRecords(); } // 写入 NDEF 记录 await FlutterNfcKit.writeNDEFRecords(records); // 结束会话 await FlutterNfcKit.finish();
注意:iOS 仅支持部分 NFC 功能,且需在 Info.plist 中声明用途。建议在实际设备上测试。
更多关于Flutter如何使用flutter_nfc_kit插件的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Flutter 中使用 flutter_nfc_kit 插件可以方便地实现 NFC 功能,包括读取和写入 NFC 标签。以下是基本步骤和示例代码:
1. 添加依赖
在 pubspec.yaml 文件中添加依赖:
dependencies:
flutter_nfc_kit: ^4.0.0
运行 flutter pub get 安装插件。
2. 配置权限(Android 和 iOS)
- Android:在
android/app/src/main/AndroidManifest.xml中添加 NFC 权限:<uses-permission android:name="android.permission.NFC" /> - iOS:在
ios/Runner/Info.plist中添加 NFC 使用描述:<key>NFCReaderUsageDescription</key> <string>用于读取 NFC 标签</string>
3. 基本使用示例
import 'package:flutter/material.dart';
import 'package:flutter_nfc_kit/flutter_nfc_kit.dart';
class NFCExample extends StatefulWidget {
@override
_NFCExampleState createState() => _NFCExampleState();
}
class _NFCExampleState extends State<NFCExample> {
String nfcData = "未读取";
Future<void> readNFC() async {
try {
// 检查设备是否支持 NFC
if (await FlutterNfcKit.nfcAvailability != NFCAvailability.available) {
setState(() => nfcData = "设备不支持 NFC");
return;
}
// 开始 NFC 会话
var tag = await FlutterNfcKit.poll(
timeout: const Duration(seconds: 10),
);
// 读取标签信息
setState(() {
nfcData = "标签类型: ${tag.type}\n标识: ${tag.id}";
});
// 可选:读取 NDEF 记录
if (tag.standard == "ISO 14443") {
var records = await FlutterNfcKit.readNDEFRecords();
for (var record in records) {
print("NDEF 记录: ${record.data}");
}
}
// 结束会话
await FlutterNfcKit.finish();
} catch (e) {
setState(() => nfcData = "读取失败: $e");
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(nfcData),
ElevatedButton(
onPressed: readNFC,
child: Text("读取 NFC"),
),
],
),
),
);
}
}
4. 注意事项
- Android:需要 API 级别 19 或更高。
- iOS:仅支持 iPhone 7 及以上设备,且仅能读取 NDEF 格式标签。
- 测试时请使用真实 NFC 标签,模拟器无法测试 NFC 功能。
通过以上步骤,即可在 Flutter 应用中集成 NFC 读取功能。更多高级用法(如写入数据)可参考插件的官方文档。

