将生成的条形码保存并打印为图像
Save and print generated barcode as image
我正在使用 barcode_widget 生成条形码和二维码。但我还需要打印并保存代码。
我目前生成条码和二维码的代码如下:
Center(
child: BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.code128(),
width: 200,
height: 200,
drawText: false,
),
),
和
BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.qrCode(),
),
两者都在一个列中,我有两个按钮,分别称为“保存”和“打印”。那么如何保存和打印生成的代码呢?
您可以使用RepaintBoundary
请按照以下步骤操作:
1.创建密钥。
GlobalKey _screenShotKey = GlobalKey();
2。将条形码包裹在重绘边界中并附加密钥
RepaintBoundary(
key: _screenShotKey,
child: Center(
child: BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.code128(),
width: 200,
height: 200,
drawText: false,
),
)
)
3。将 dart:ui
导入为 ui
import 'dart:ui' as ui;
4.创建一个方法来截取小部件的屏幕截图并保存它。
Future<File> takeScreenshot() async {
RenderRepaintBoundary boundary =
_screenShotKey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final tempPath = (await getTemporaryDirectory()).path;
final path = tempPath + "qr.png";
File imgFile = File(path);
return imgFile.writeAsBytes(pngBytes);
}
5.保存在 gallery/photos 应用程序中;使用 GallerySaver package
void save() async {
takeScreenshot().then((value) async {
bool saved = await GallerySaver.saveImage(value.path);
print(saved);
}).catchError((onError) {});
}
我正在使用 barcode_widget 生成条形码和二维码。但我还需要打印并保存代码。
我目前生成条码和二维码的代码如下:
Center(
child: BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.code128(),
width: 200,
height: 200,
drawText: false,
),
),
和
BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.qrCode(),
),
两者都在一个列中,我有两个按钮,分别称为“保存”和“打印”。那么如何保存和打印生成的代码呢?
您可以使用RepaintBoundary
请按照以下步骤操作:
1.创建密钥。
GlobalKey _screenShotKey = GlobalKey();
2。将条形码包裹在重绘边界中并附加密钥
RepaintBoundary(
key: _screenShotKey,
child: Center(
child: BarcodeWidget(
data: widget.product.productId!,
barcode: Barcode.code128(),
width: 200,
height: 200,
drawText: false,
),
)
)
3。将 dart:ui
导入为 ui
import 'dart:ui' as ui;
4.创建一个方法来截取小部件的屏幕截图并保存它。
Future<File> takeScreenshot() async {
RenderRepaintBoundary boundary =
_screenShotKey.currentContext.findRenderObject();
ui.Image image = await boundary.toImage();
ByteData byteData = await image.toByteData(format: ui.ImageByteFormat.png);
Uint8List pngBytes = byteData.buffer.asUint8List();
final tempPath = (await getTemporaryDirectory()).path;
final path = tempPath + "qr.png";
File imgFile = File(path);
return imgFile.writeAsBytes(pngBytes);
}
5.保存在 gallery/photos 应用程序中;使用 GallerySaver package
void save() async {
takeScreenshot().then((value) async {
bool saved = await GallerySaver.saveImage(value.path);
print(saved);
}).catchError((onError) {});
}