printQRCode static method

List<int> printQRCode(
  1. String data, {
  2. QRSize size = QRSize.size4,
  3. QRCorrection correction = QRCorrection.M,
})

Print QR code

Implementation

static List<int> printQRCode(String data, {QRSize size = QRSize.size4, QRCorrection correction = QRCorrection.M}) {
  List<int> command = [];
  List<int> dataBytes = data.codeUnits;

  // GS ( k - QR code commands
  const List<int> qrHeader = [0x1D, 0x28, 0x6B]; // GS ( k

  // Function 165: Set QR code model
  command.addAll(qrHeader);
  command.addAll([0x04, 0x00]); // pL pH
  command.addAll([0x31, 0x41]); // cn fn
  command.addAll([0x32, 0x00]); // n1 n2 (Model 2)

  // Function 167: Set module size
  command.addAll(qrHeader);
  command.addAll([0x03, 0x00]); // pL pH
  command.addAll([0x31, 0x43]); // cn fn
  command.add(size.value); // n

  // Function 169: Set error correction level
  command.addAll(qrHeader);
  command.addAll([0x03, 0x00]); // pL pH
  command.addAll([0x31, 0x45]); // cn fn
  command.add(correction.value); // n

  // Function 180: Store data
  command.addAll(qrHeader);
  int dataLength = dataBytes.length + 3;
  command.addAll([dataLength & 0xFF, (dataLength >> 8) & 0xFF]); // pL pH
  command.addAll([0x31, 0x50]); // cn fn
  command.add(0x30); // m
  command.addAll(dataBytes); // Data

  // Function 181: Print QR code
  command.addAll(qrHeader);
  command.addAll([0x03, 0x00]); // pL pH
  command.addAll([0x31, 0x51]); // cn fn
  command.add(0x30); // m

  return command;
}