Flutter NFC 卡与 nfc_manger 包的读/写问题

问题描述 投票:0回答:1

我正在寻找一些帮助来解决这个问题。 我正在使用 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 nfc
1个回答
0
投票

我真的不明白它是如何工作的,但是当我在flutter上编写和读取rfid标签时,我遇到了同样的问题。对我来说唯一的解决方案是更改为另一个库,例如 Flutter_nfc_kit ,它在标记上写入时可空的频率较低。希望有人能解释这个错误。

© www.soinside.com 2019 - 2024. All rights reserved.