flutter - 如何在颤动中保存生成的批量二维码
问题描述
我正在使用qr_flutter库,我想知道如何将批量生成的 QR 码保存到 zip 文件中。我找到了一个关于如何保存生成的二维码的教程,但它不是批量的。
此按钮将使用 for 循环生成大量 qr 代码,然后将其保存到图库,问题是如何将所有 qr 转储到 zip 文件中或任何收集它们的方法,以便更容易共享
CupertinoButton.filled(
child: Text('Get QR Code'),
onPressed: () async {
for (int i = 1; i <= 3; i++) {
String path = await createQrPic('ID1B$i');
final success = await GallerySaver.saveImage(path);
print('QR $i is $success');
}
},
)
这是代码createQRPic()
import 'dart:io';
import 'dart:typed_data';
import 'dart:ui' as ui;
import 'package:flutter/cupertino.dart';
import 'package:flutter/painting.dart';
import 'package:path_provider/path_provider.dart';
import 'package:qr_flutter/qr_flutter.dart';
Future<String> createQrPic(String qrData) async {
final qrValidationResult = QrValidator.validate(
data: qrData,
version: QrVersions.auto,
errorCorrectionLevel: QrErrorCorrectLevel.L,
);
(qrValidationResult.status == QrValidationStatus.valid) ? print('QR is valid') : print(qrValidationResult.error);
final qrCode = qrValidationResult.qrCode;
final painter = QrPainter.withQr(
qr: qrCode!,
color: const Color(0xFF000080),
gapless: true,
embeddedImageStyle: null,
embeddedImage: null,
);
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
String fileName= 'jm-$qrData';
String path = '$tempPath/$fileName.png';
final picData = await painter.toImageData(
480,
format: ui.ImageByteFormat.png,
);
await writeToFile(picData!, path);
return path;
}
Future<void> writeToFile(ByteData data, String path) async {
final buffer = data.buffer;
await File(path).writeAsBytes(buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}
解决方案
推荐阅读
- go - golang溢出int64直接操作但没有事先赋值?
- javascript - jQuery单击事件在第一次单击时不起作用
- java - RandomAccessFile 打开文件不起作用
- regex - 仅在 powershell 中的特定单词之后用字符替换空格
- c# - 发送数据包后接收字节时 C# 窗体冻结
- java - JPA EntityManager 不再查找实体,即使恢复到曾经可以工作的代码也是如此
- android - 更新播放服务后出错“程序类型已存在:com.google.android.gms.internal.measurement.zzabo”
- php - 自定义 wordpress 设置页面不保存颜色
- oracle - 使用 Cursor 定义光标
- ruby - Rubocop:使用 next 跳过迭代