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 回复
        
      
      
         
        
       
             
             
            


