You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter NFC Kit中NDEFRecord创建报错求助:需指定类型与负载

解决FlutterNfcKit创建NDEFRecord的语法错误

问题根源

你代码里的错误有两处:

  1. NDEFTypeNameFormat.nfcWellKnown是NFC标准预定义类型(如文本、URI),不支持自定义的"debit_card"类型名,且该类型对应的构造参数不是typeName,而是type,参数值必须是标准短标识(如"T"代表文本、"U"代表URI)。
  2. writeNDEFRecords和finish都是异步方法,原代码缺少await会导致执行逻辑混乱。

修正后的代码

如果要创建自定义的"debit_card"类型记录,需改用NDEFTypeNameFormat.nfcExternal类型,代码如下:

NDEFRecord record = NDEFRecord(
  type: NDEFTypeNameFormat.nfcExternal,
  typeName: "debit_card",
  payload: cardDetails.codeUnits,
);

await FlutterNfcKit.writeNDEFRecords([record]);
await FlutterNfcKit.finish(iosAlertMessage: "虚拟借记卡已写入,请将设备靠近NFC读卡器使用。");

额外说明

  • 若必须使用nfcWellKnown类型,只能用标准预定义的type值,例如文本记录:
    NDEFRecord textRecord = NDEFRecord(
      type: NDEFTypeNameFormat.nfcWellKnown,
      type: "T", // 标准文本类型标识
      payload: utf8.encode(cardDetails),
    );
    
  • 确保cardDetails是字符串类型,codeUnits返回UTF-16编码的字节数组,若需要UTF-8编码,建议改用utf8.encode(cardDetails)。

内容的提问来源于stack exchange,提问作者ccv

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:42:36