ndef
A Dart library to decode & encode NDEF records, supporting multiple types.
A Dart library to decode & encode NDEF records, supporting multiple types.
English project snapshot. Visit GitHub for the latest content.
ndef is a Dart library to decode & encode NDEF records, supporting multiple types including (grouped by Type Name Format):
urn:nfc:wkt:), with:
T)U)Sig)Sp), including sub-record:
act)s)t)Hr/Hs/Hm/Hi/Hc/ac/cr)application/vnd.bluetooth.ep.oob)application/vnd.bluetooth.le.oob)urn:nfc:ext:), with:
android.com:pkg)This library is still under active development and subject to breaking API changes and malfunction. Pull requests and issues are most welcomed, especially on:
import 'package:ndef/ndef.dart' as ndef;
// encoding
var uriRecord = new ndef.UriRecord.fromString("https://github.com/nfcim/ndef");
var textRecord = new ndef.TextRecord(text: "Hello");
var encodedUriRecord = uriRecord.encode().toHexString(); /// encode a single record, and use our extension method on [Uint8List]
var encodedAllRecords = ndef.encodeNdefMessage([uriRecord, textRecord]).toHexString(); // encode several records as a message
// decoding
var encodedTextRecord = "d1010f5402656e48656c6c6f20576f726c6421";
var decodedRecords = ndef.decodeRawNdefMessage(encodedTextRecord.toBytes());
assert(decodedRecords.length == 1);
if (decodedRecords[0] is ndef.TextRecord) {
assert(decodeRecords[0].text == "Hello");
} else {
// we will not reach here
}
// data-binding (by implementing payload as dynamic getter / setter)
var origPayload = uriRecord.payload!;
print(origPayload.toHexString());
uriRecord.content = "github.com/nfcim/flutter_nfc_kit";
print(uriRecord.payload!.toHexString()); // changed
uriRecord.payload = origPayload;
print(uriRecord.content); // changed back
// decoding by providing parts of a record
var partiallyDecodedUrlRecord = ndef.decodePartialNdefMessage(ndef.TypeNameFormat.nfcWellKnown, utf8.encode("U"), origPayload, id: Uint8List.fromList([0x1, 0x2]));
See example code for a more complete example.
Refer to the documentation for detailed usage.
Start with your use case, compare repository activity, and check the original project before adopting it.
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗