我在阅读Android手机上的NFC芯片时遇到了问题.问题是,当我在Ffltter应用程序中扫描一个标签时,它会打开一个新窗口,并显示"已扫描新标签".

这很烦人,因为它离开了应用程序,我必须回到它.我试着搜索它,但如果有任何解决方案是针对"nfc_in_fltter"插件的,但我使用的是"nfc_Manager"插件.我不能使用"NFC_IN_FLATTH",因为它过时了,并且与DART 3不兼容.

Here are some sources I found:
https://github.com/semlette/nfc_in_flutter/issues/50

nfc_in_flutter: How to prevent "New Tag Scanned" in android version?

When app receives NFC data it opens "New Tag collected"//我找到了最好的,但仍然不起作用

有人知道我怎么才能让这扇窗不打开吗?

推荐答案

最近,我使用了相同的Ffltter NFC管理器包,也遇到了同样的问题:

Android系统的NFC处理程序正在干扰并打开新的标签扫描窗口,而不是直接处理它的Ffltter应用程序.

就我所见,基本上,你需要有正确的Flutter 代码来侦听NFC标签,否则,Android One将拦截该标签.

所以,在你的initState个人中,如果你打don't个电话:

NfcManager.instance.startSession(
  onDiscovered: (NfcTag tag) async {
    // Do something with an NfcTag instance.
  },
);

它将打开Android One,因为没有处理卡的代码.

因此,我的解决方案是将NFC标签设置为always listen,其中包括:

@override
void initState() {
  super.initState();
  NfcManager.instance.startSession(
    onDiscovered: (NfcTag tag) async {
      // Even if you're not doing anything here, it will still prevent the Android NFC handler from triggering.
    },
  );
}

不管我是否需要读这张卡片.由于我们使用的是Ffltter NFC管理器,它将覆盖Android管理器.

另外,别忘了处理好:

@override
void dispose() {
  NfcManager.instance.stopSession();
  super.dispose();
}

Flutter相关问答推荐

如何让GridView.builder用另外两个小部件来占据屏幕的剩余部分

Flutter 应用程序中的Firebase实时数据库中的orderByChild()不适用于我

Ffltter:发布版本中的Path NotFoundException

如何将Visual Studio代码中Flutter 应用的包名从com.example.XXX更改为Play Store中受限制的包名称

Flutter :执行com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction时出现故障

轻松本地化包翻译在底部导航栏项目标签Flutter 翼dart 中不起作用

摆动更改标记可轻敲文本按钮样式

播放特定持续时间Flutter 的音频

如何在列表视图生成器中显示图像

在 Flutter 中更改喜欢按钮的 colored颜色

像图像一样Flutter 自定义标签

Android 模拟器在 Apple M2 芯片 EXC_BAD_ACCESS / KERN_INVALID_ADDRESS 上随机崩溃

忽略异步函数上的 context.mounted 访问 linting 错误是否安全?

面对Flutter 中的行和列问题

Flutter:为什么我的 listTile colored颜色 被容器 colored颜色 覆盖了?

如何流畅切换画面?

Firebase 中的查询限制 - .orderBy() 错误

Flutter ListView builder 未使用新数据更新

这在Flutter 的 pubspec 文件中是什么意思?

如何在Flutter 中专注于列表视图中最新添加的项目