Flutter打印功能插件gcprinter的使用
Flutter打印功能插件gcprinter的使用
本插件允许Flutter应用程序使用几个简单的API在Goodcom POS打印机上打印票据。该插件支持所有Goodcom Android POS打印机。
安装
flutter pub add gcprinter
主要特性
- 打印文本(可以设置字体大小和对齐方式)
- 打印图像(可以设置对齐方式)
- 打印条形码或二维码(通过参数设置条形码)
开始使用
// 导入包
import 'package:gcprinter/gcprinter.dart';
功能列表
void drawText(String strLeft,int fontLeft,String strMid,int fontMid,String strRight,int fontRight);
void drawBarcode(String str,int align)
void printText();
void printImageFile(String filePath,int align,bool isAutoFeed);
void printImage(Uint8List img ,int align,bool isAutoFeed);
// 简单易用的API
void drawNewLine();
void drawOneLine([int? fontSize]);
void drawCustom(String str,int fontSize,int align);
void drawLeftRight(String left,String right,int fontSize);
void drawImage(String path);
void drawQrCode(String str, int align, [int? height]);
示例
Uint8List bytes = await _getAssetImage('assets/images/logo.png');
Gcprinter.printImage(bytes, Gcprinter.alignCenter, false);
Gcprinter.drawText("1 x", Gcprinter.fontSmallBold, "test", Gcprinter.fontSmallBold, "65.00", Gcprinter.fontSmallBold);
Gcprinter.drawText("option1", Gcprinter.fontDefault, "", Gcprinter.fontDefault, "60.00", Gcprinter.fontDefault);
Gcprinter.drawText("option2", Gcprinter.fontDefault, "", Gcprinter.fontDefault, "5.00", Gcprinter.fontDefault);
Gcprinter.drawBarcode("test123", Gcprinter.alignCenter,Gcprinter.barcodeQrCode);
Gcprinter.drawText("",0,"test123",Gcprinter.fontDefault,"",0);
Gcprinter.printText(true);
不同实现方式的同一示例
Uint8List bytes = await _getAssetImage('assets/images/logo.png');
Gcprinter.printImage(bytes, Gcprinter.alignCenter, false);
Gcprinter.drawText("1 x", Gcprinter.fontSmallBold, "test", Gcprinter.fontSmallBold, "65.00", Gcprinter.fontSmallBold);
Gcprinter.drawLeftRight("option1", Gcprinter.fontDefault, "60.00", Gcprinter.fontDefault);
Gcprinter.drawLeftRight("option2", Gcprinter.fontDefault, "5.00", Gcprinter.fontDefault);
Gcprinter.drawQrCode("test123", Gcprinter.alignCenter);
Gcprinter.drawCustom("test123",Gcprinter.fontDefault,Gcprinter.alignCenter);
Gcprinter.printText(true);
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:gcprinter/gcprinter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _platformVersion = 'Unknown';
[@override](/user/override)
void initState() {
super.initState();
initPlatformState();
}
// 平台消息是异步的,所以我们初始化在一个异步方法中。
Future<void> initPlatformState() async {
String platformVersion='点击打印按钮测试打印';
// 如果小部件在异步平台消息飞行时从树中移除,我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
if (!mounted) return;
setState(() {
_platformVersion = platformVersion;
});
}
Future<Uint8List> readBytes(String path) async {
try {
ByteData data = await rootBundle.load(path);
Uint8List imgData = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
return imgData;
} catch (err) {
rethrow;
}
}
Future<Uint8List> _getAssetImage(String path) async {
return await readBytes(path);
}
Future<void> _btnPirnt() async{
Uint8List bytes = await _getAssetImage('assets/images/logo.png');
Gcprinter.printImage(bytes, Gcprinter.alignCenter, false);
Gcprinter.drawOneLine(Gcprinter.fontMediumBold);
Gcprinter.drawCustom("请求时间", Gcprinter.fontMedium, Gcprinter.alignCenter);
Gcprinter.drawCustom("10:03", Gcprinter.fontMediumBold, Gcprinter.alignCenter);
Gcprinter.drawOneLine();
Gcprinter.drawText("1 x", Gcprinter.fontSmallBold, "test", Gcprinter.fontSmallBold, "65.00", Gcprinter.fontSmallBold);
Gcprinter.drawLeftRight("option1", "60.00", Gcprinter.fontDefault);
Gcprinter.drawText("option2", Gcprinter.fontDefault, "", Gcprinter.fontDefault, "5.00", Gcprinter.fontDefault);
Gcprinter.drawQrCode("test123", Gcprinter.alignCenter);
Gcprinter.drawText("",0,"test123",Gcprinter.fontDefault,"",0);
Gcprinter.drawOneLine();
Gcprinter.drawCustom("谢谢!", Gcprinter.fontSmall, Gcprinter.alignCenter);
Gcprinter.printText(true);
}
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('插件示例应用'),
),
body: Center(
child: Text('运行在: $_platformVersion\n'),
),
floatingActionButton: FloatingActionButton(
onPressed: _btnPirnt,
tooltip: '打印',
child: Icon(Icons.print),
),
),
);
}
}
更多关于Flutter打印功能插件gcprinter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复