Flutter NFC Kit中NDEFRecord创建报错求助:需指定类型与负载
解决FlutterNfcKit创建NDEFRecord的语法错误
问题根源
你代码里的错误有两处:
NDEFTypeNameFormat.nfcWellKnown是NFC标准预定义类型(如文本、URI),不支持自定义的"debit_card"类型名,且该类型对应的构造参数不是typeName,而是type,参数值必须是标准短标识(如"T"代表文本、"U"代表URI)。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
相关产品推荐
相关产品推荐

