diff --git a/auth/lib/ui/settings/data/html_export.dart b/auth/lib/ui/settings/data/html_export.dart
index 3142ddaf2e..09c660a6a6 100644
--- a/auth/lib/ui/settings/data/html_export.dart
+++ b/auth/lib/ui/settings/data/html_export.dart
@@ -8,9 +8,17 @@ import 'package:intl/intl.dart';
import 'package:qr_flutter/qr_flutter.dart';
Future generateQRImageBase64(String data) async {
- final qrPainter = QrPainter(
+ const size = 250.0;
+ const padding = 20.0;
+
+ final qrCode = QrCode.fromData(
data: data,
- version: QrVersions.auto,
+ errorCorrectLevel: QrErrorCorrectLevel.L,
+ );
+
+ final qrPainter = QrPainter.withQr(
+ qr: qrCode,
+ gapless: true,
eyeStyle: const QrEyeStyle(
eyeShape: QrEyeShape.square,
color: Colors.black,
@@ -21,12 +29,18 @@ Future generateQRImageBase64(String data) async {
),
);
- const size = 250.0;
+ const totalSize = size + padding * 2;
+
final recorder = ui.PictureRecorder();
final canvas = Canvas(recorder);
- qrPainter.paint(canvas, const Size(size, size));
+ const paintBounds = Size(size, size);
+
+ canvas.translate(padding, padding);
+
+ qrPainter.paint(canvas, paintBounds);
+
final picture = recorder.endRecording();
- final img = await picture.toImage(size.toInt(), size.toInt());
+ final img = await picture.toImage(totalSize.toInt(), totalSize.toInt());
final byteData = await img.toByteData(format: ui.ImageByteFormat.png);
final pngBytes = byteData!.buffer.asUint8List();