flutter_thermal_printer_pos 0.0.2 copy "flutter_thermal_printer_pos: ^0.0.2" to clipboard
flutter_thermal_printer_pos: ^0.0.2 copied to clipboard

A Flutter plugin for thermal printer support with TCP/Network and Bluetooth printing capabilities using ESC/POS commands.

flutter_thermal_printer_pos #

A Flutter plugin for thermal printer support with TCP/Network and Bluetooth printing capabilities using ESC/POS commands. This plugin provides a bridge to native thermal printer libraries.

Features #

  • TCP/Network Printing - Print over WiFi or Ethernet
  • Bluetooth Printing - Print via paired Bluetooth devices (Android only)
  • ESC/POS Commands - Full support for ESC/POS formatting
  • Image Printing - Support for images via URL
  • Barcode & QR Code - Generate barcodes and QR codes
  • Text Formatting - Bold, underline, different font sizes
  • Layout Control - Left, center, right alignment
  • Auto-cut & Cash Drawer - Hardware control features
  • Android & iOS Support - Cross-platform implementation

Supported Printers #

This plugin has been tested with the following thermal printer models:

  • Epson TM-T82, TM-T82X, TM-T88VI, TM-T20III
  • Zywell, VSC, EPPOS
  • Most ESC/POS compatible thermal printers

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_thermal_printer_pos: ^0.0.1

Then run:

flutter pub get

Permissions #

Android #

Add the following permissions to your android/app/src/main/AndroidManifest.xml:

<!-- For network printing -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- For Bluetooth printing -->
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />

iOS #

Bluetooth permissions are handled automatically by the plugin.

Usage #

Import the package #

import 'package:flutter_thermal_printer_pos/flutter_thermal_printer_pos.dart';

Initialize the plugin #

// Simple usage - direct method calls

TCP/Network Printing #

// Print via TCP/IP
try {
  await FlutterThermalPrinterPos.printTcp(
    ip: '192.168.1.100',
    port: 9100,
    payload: '[C]Hello World!\n[L]This is a test',
    autoCut: true,
    openCashbox: false,
  );
  print('Print successful!');
} catch (e) {
  print('Print failed: $e');
}

Bluetooth Printing #

try {
  await FlutterThermalPrinterPos.printBluetooth(
    payload: '[C]Hello World!\n[L]Bluetooth test',
    printerNbrCharactersPerLine: 38,
  );
  print('Print successful!');
} catch (e) {
  print('Print failed: $e');
}

ESC/POS Formatting #

The plugin supports ESC/POS formatting syntax:

final String receiptContent = '''
[C]<img>https://via.placeholder.com/300.jpg</img>
[L]
[C]<u><font size='big'>ORDER N°045</font></u>
[L]
[C]================================
[L]
[L]<b>BEAUTIFUL SHIRT</b>[R]9.99€
[L]  + Size : S
[L]
[L]<b>AWESOME HAT</b>[R]24.99€
[L]  + Size : 57/58
[L]
[C]--------------------------------
[R]TOTAL PRICE :[R]34.98€
[R]TAX :[R]4.23€
[L]
[C]================================
[L]
[L]<font size='tall'>Customer :</font>
[L]Raymond DUPONT
[L]5 rue des girafes
[L]31547 PERPETES
[L]Tel : +33801201456
[L]
[C]<barcode type='ean13' height='10'>831254784551</barcode>
[C]<qrcode size='20'>https://example.com</qrcode>
''';

await FlutterThermalPrinterPos.printTcp(
  ip: '192.168.1.100',
  port: 9100,
  payload: receiptContent,
);

Configuration Options #

TCP Printing Parameters #

Parameter Type Default Description
ip String Required Printer IP address
port int Required Printer port (usually 9100)
payload String Required Content to print
autoCut bool true Automatically cut paper
openCashbox bool false Open cash drawer
mmFeedPaper int 20 Paper feed amount (mm)
printerDpi int 203 Printer DPI
printerWidthMM int 80 Paper width (mm)
printerNbrCharactersPerLine int 42 Characters per line
timeout int 30000 Connection timeout (ms)

Bluetooth Printing Parameters #

Parameter Type Default Description
payload String Required Content to print
autoCut bool true Automatically cut paper
openCashbox bool false Open cash drawer
mmFeedPaper int 20 Paper feed amount (mm)
printerDpi int 203 Printer DPI
printerWidthMM int 80 Paper width (mm)
printerNbrCharactersPerLine int 42 Characters per line

ESC/POS Formatting Guide #

Text Alignment #

  • [L] - Left align
  • [C] - Center align
  • [R] - Right align

Text Formatting #

  • <b>text</b> - Bold text
  • <u>text</u> - Underlined text
  • <font size='big'>text</font> - Large text
  • <font size='tall'>text</font> - Tall text

Images #

  • <img>https://example.com/image.jpg</img> - Print image from URL

Barcodes #

  • <barcode type='ean13' height='10'>123456789012</barcode> - EAN13 barcode
  • <barcode type='ean8' height='10'>1234567</barcode> - EAN8 barcode
  • <barcode type='upca' height='10'>123456789012</barcode> - UPC-A barcode

QR Codes #

  • <qrcode size='20'>Your text here</qrcode> - QR code

Error Handling #

The plugin throws specific exceptions that you can catch:

try {
  await FlutterThermalPrinterPos.printTcp(
    ip: '192.168.1.100',
    port: 9100,
    payload: '[C]Test Print',
  );
} catch (e) {
  if (e.toString().contains('INVALID_ARGUMENTS')) {
    print('Invalid printer configuration');
  } else if (e.toString().contains('PRINT_ERROR')) {
    print('Printer communication error');
  } else if (e.toString().contains('BLUETOOTH_ERROR')) {
    print('Bluetooth connection issue');
  } else {
    print('Unknown error: $e');
  }
}

Platform Support #

Feature Android iOS
TCP/Network Printing
Bluetooth Printing
ESC/POS Commands ✅*
Image Printing
Barcode Generation
QR Code Generation

*iOS has basic ESC/POS support, full formatting support coming soon

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments #

0
likes
0
points
33
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for thermal printer support with TCP/Network and Bluetooth printing capabilities using ESC/POS commands.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_thermal_printer_pos

Packages that implement flutter_thermal_printer_pos