qr method

dynamic qr(
  1. String data, {
  2. int qrSize = 150,
  3. PrintAlign align = PrintAlign.center,
})

Draw QR Code

Implementation

qr(String data, {int qrSize = 150, PrintAlign align = PrintAlign.center}) {
  final qr = QrCode.fromData(
    data: data,
    errorCorrectLevel: QrErrorCorrectLevel.M,
  );
  final qrImage = QrImage(qr);

  final drawQrImage = img.Image(width: qrSize, height: qrSize);
  fill(drawQrImage, color: ColorUint1.rgba(255, 255, 255, 255));

  final moduleCount = qrImage.moduleCount;
  final pixelSize = (qrSize / moduleCount).floor();

  for (int y = 0; y < moduleCount; y++) {
    for (int x = 0; x < moduleCount; x++) {
      final isDark = qrImage.isDark(x, y);
      final color = ColorUint1.rgba(0, 0, 0, 255);
      if (isDark) {
        for (int dy = 0; dy < pixelSize; dy++) {
          for (int dx = 0; dx < pixelSize; dx++) {
            final px = x * pixelSize + dx;
            final py = y * pixelSize + dy;

            if (px < drawQrImage.width && py < drawQrImage.height) {
              drawQrImage.setPixel(px, py, color);
            }
          }
        }
      }
    }
  }
  image(drawQrImage, align: align, width: qrSize, height: qrSize);
}