我正在寻找一些帮助来解决这个问题。 我正在使用 nfc_manager 包在我的 flutter 项目中读写 nfc 卡。 效果很好。但有几次,当我写卡片时,我遇到了错误。其中“ndef”为空,并弹出一个我输入的错误(“标签不可写 ndef。”) 从那以后我就无法读写任何卡片了。 那时我必须重新启动设备,然后它就可以正常工作了。 大家有什么想法吗?代码如下
if (await NfcManager.instance.isAvailable()) {
await NfcManager.instance.stopSession();
print("available");
}
await NfcManager.instance.startSession(onDiscovered: (NfcTag tag) async {
var ndef = Ndef.from(tag);
if (ndef == null || !ndef.isWritable) { // ndef is null(error is here)
NfcManager.instance.stopSession();
print("failed");
var baseDialog = BaseAlertDialog(
title: "Warning",
content: "Tag is not ndef writable.",
backgroundColor: Colors.red.shade300,
yesOnPressed: () {
_isPrintPressed = false;
Navigator.pop(context);
},
yes: "OK",
);
showDialog(
context: context, builder: (BuildContext context) => baseDialog);
return;
}
NdefMessage ndefMessage = null;
try {
ndefMessage = await ndef.read();
} catch (e) {}
if (await _validateTag(ndefMessage) || ndefMessage == null ) {
// then go ahead
我真的不明白它是如何工作的,但是当我在flutter上编写和读取rfid标签时,我遇到了同样的问题。对我来说唯一的解决方案是更改为另一个库,例如 Flutter_nfc_kit ,它在标记上写入时可空的频率较低。希望有人能解释这个错误。