layout method

  1. @override
PwBox layout(
  1. Context context,
  2. BoxConstraints constraints
)
override

layout API.

Implementation

@override
PwBox layout(Context context, BoxConstraints constraints) {
  final List<List<bool>> matrix = QrEncoder(ecc: ecc).encode(data);
  final int n = matrix.length + padding * 2;
  final PwSize box = constraints.constrain(PwSize(size, size));
  return CustomPaint(
    size: box,
    painter: (PdfCanvas canvas, PwSize painted) {
      canvas.endText();
      canvas.fillRect(0, 0, painted.width, painted.height, backgroundColor);
      final double module = painted.width / n;
      canvas.setFillColor(color);
      for (int r = 0; r < matrix.length; r++) {
        for (int c = 0; c < matrix[r].length; c++) {
          if (!matrix[r][c]) {
            continue;
          }
          canvas.rect(
            (c + padding) * module,
            (r + padding) * module,
            module + 0.05,
            module + 0.05,
          );
          canvas.fill();
        }
      }
    },
  ).layout(context, constraints);
}