writeNdef method

Future<bool> writeNdef(
  1. NfcTag tag,
  2. int prefix,
  3. String dataPayload
)

Implementation

Future<bool> writeNdef(NfcTag tag, int prefix, String dataPayload) async {
  int payloadLength = dataPayload.length + 1;
  int length = payloadLength + 4;
  Uint8List header = Uint8List.fromList([
    0x01,
    0x03,
    0xA0,
    0x0C,
    0x34,
    0x03,
    length,
    0xD1,
    0x01,
    payloadLength,
    0x55,
    prefix
  ]);
  Uint8List data = Uint8List.fromList(header +
      Uint8List.fromList(dataPayload.codeUnits) +
      Uint8List.fromList([0xFE]));

  int start;
  int end;
  bool? isSuccess;
  Uint8List payload;
  int loop = ((data.length + 3) / 4).ceil();

  for (int i = 0; i < loop; i++) {
    start = i * 4;
    end = start + 4;

    if (end > data.length) {
      payload = data.sublist(start, data.length);

      if (payload.length != Sic431XFlag.B_ACK) {
        for (int j = payload.length; j < 4; j++) {
          payload = Uint8List.fromList(payload + '0'.codeUnits);
        }
      }
    } else {
      payload = data.sublist(start, end);
    }

    isSuccess = await writeE2(tag, (0x04 + i), payload);
  }

  return isSuccess!;
}