要解决这个问题,可以使用 ForegroundNdefReader
类在 FLUTTER 应用程序中实现 NFC 读取器。这个类可以确保您的应用程序在前台运行并拥有 NFC 权限。您需要使用 NfcAdapter
设备和 Ndef
标签来进行交互。
这里是一个简单的参考代码示例:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:nfc_manager/nfc_manager.dart';
class MyNfcScreen extends StatefulWidget {
@override
_MyNfcScreenState createState() => _MyNfcScreenState();
}
class _MyNfcScreenState extends State {
StreamSubscription _streamSubscription;
@override
void initState() {
super.initState();
_initNfc();
}
void _initNfc() async {
try {
await NfcManager.instance.startSession(onDiscovered: (tag) async {
if (mounted) {
setState(() {
// do something with the tag
});
}
});
} on PlatformException catch (e) {
print(e);
}
}
@override
void dispose() {
_streamSubscription?.cancel();
NfcManager.instance.stopSession();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My NFC Screen'),
),
body: Center(
child: Text('NFC content goes here'),
),
);
}
}
在代码示例中,我们使用了 NfcManager
包来初始化和关闭 NFC 会话,并在 onDiscovered
事件中处理读取的标签内容。最后,我们在一个居中的文本小部件中显示 NFC 内容。这将确保您的应用程序在活动和前台状态下拥有正确的 NFC 权限。