flutter_bixolon_printer 0.0.1 copy "flutter_bixolon_printer: ^0.0.1" to clipboard
flutter_bixolon_printer: ^0.0.1 copied to clipboard

discontinued
PlatformAndroid

A Flutter plugin for connecting to and printing with Bixolon thermal printers. Supports device discovery, connection management, text/image/barcode printing, and international character sets.

Flutter Bixolon Printer Plugin #

A Flutter plugin for connecting to and printing with Bixolon thermal printers. This plugin provides a comprehensive interface for discovering, connecting to, and using Bixolon printers across multiple connection types.

🚨 Platform Support Notice #

IMPORTANT: This plugin SUPPORTS ANDROID ONLY

  • Currently compatible with Android devices
  • NOT supported on iOS, Web, or other platforms

Features #

  • Device Discovery: Scan for Bixolon printers via Bluetooth, WiFi, or Ethernet
  • Connection Management: Connect to printers with timeout handling and status monitoring
  • Basic Printing:
    • Text printing with various formatting options
    • Image printing (from file path or image data)
    • QR code and barcode printing
  • Advanced Printing:
    • Multi-column text layouts
    • Formatted receipts with headers and footers
    • Support for international text
    • Tables and structured layouts
  • Printer Controls:
    • Paper cutting
    • Status checking
    • Feed to black mark
    • Transaction mode

Supported Printer Models #

  • SPP-R200II, SPP-R200III
  • SPP-R210, SPP-R215, SPP-R220
  • SPP-R300, SPP-R310
  • SPP-R400, SPP-R410, SPP-R418
  • SPP-C200, SPP-C300
  • And other Bixolon printers supported by the Bixolon SDK

Installation #

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

dependencies:
  flutter_bixolon_printer: ^0.0.1

Android Setup #

  1. Add permissions to your AndroidManifest.xml:
<!-- Bluetooth permissions -->
<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" />

<!-- Location is required for Bluetooth scanning on Android 6.0+ -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- For USB connection -->
<uses-feature android:name="android.hardware.usb.host" />

<!-- For Wi-Fi connection -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<!-- For file access -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  1. Minimum SDK version should be 21 or higher in your app's build.gradle:
minSdk = 21
  1. The plugin requires Bixolon SDK JAR files. These are included in the plugin's android/libs directory, so you don't need to add them separately.

Quick Start #

Scanning for Printers #

// Scan for Bluetooth printers
List<PrinterDevice> bluetoothPrinters = await FlutterBixolonPrinter.scanBluetoothPrinters();

// Or scan for network printers
List<PrinterDevice> networkPrinters = await FlutterBixolonPrinter.scanNetworkPrinters();

// Or scan all types
List<PrinterDevice> allPrinters = await FlutterBixolonPrinter.scanPrinters(ConnectionType.bluetooth);

Connecting to a Printer #

// Initialize the printer
await FlutterBixolonPrinter.initialize(
  deviceName: 'BixolonPrinter',
  address: printer.address,
  connectionType: printer.connectionType,
  model: 'SPP-R400',
);

// Connect to the printer
bool connected = await FlutterBixolonPrinter.connect(timeout: 5000);

Basic Printing #

// Print text
await FlutterBixolonPrinter.printText("Hello World!\n");

// Print QR code
await FlutterBixolonPrinter.printBarcode(
  "https://example.com",
  BarcodeType.qrCode,
  height: 200,
  width: 6,
  alignment: Alignment.center,
  textPosition: BarcodeTextPosition.below,
);

// Print image from file
await FlutterBixolonPrinter.printImage(
  "/path/to/image.png",
  width: 576,
  alignment: Alignment.center,
);

Advanced Printing #

// Multi-column text
await FlutterBixolonPrinter.printFormattedText(
  columns: [
    TextColumn(text: 'Item', x: 10, align: TextAlign.left),
    TextColumn(text: 'Qty', x: 300, align: TextAlign.center),
    TextColumn(text: 'Price', x: 500, align: TextAlign.right),
  ],
);

// Sample receipt
await FlutterBixolonPrinter.printReceipt(
  header: 'RECEIPT',
  items: [
    {'product': 'Coffee', 'qty': '2', 'price': '\$3.99'},
    {'product': 'Sandwich', 'qty': '1', 'price': '\$5.99'},
  ],
  columnWidths: {
    'product': 300,
    'qty': 100,
    'price': 176,
  },
  footer: 'Thank you!',
  fontSize: 20,
);

Permissions #

This plugin requires several permissions to function properly:

  • Bluetooth permissions: For discovering and connecting to Bluetooth printers
  • Location permissions: Required for Bluetooth scanning on Android
  • Network permissions: For connecting to network printers
  • Storage permissions: For reading image files to print

Make sure to request these permissions at runtime using the permission_handler package:

await [
  Permission.bluetooth,
  Permission.bluetoothConnect,
  Permission.bluetoothScan,
  Permission.location,
  Permission.storage,
].request();

SDK Requirements #

This plugin requires the Bixolon UPOS SDK for Android. The necessary JAR files are included in the plugin, so you don't need to add them separately.

Troubleshooting #

Connection Issues #

  • Ensure Bluetooth is enabled on the device
  • Check that the printer is powered on and in discoverable mode
  • For network printers, verify the IP address is correct and the printer is on the same network
  • Ensure all required permissions are granted

Printing Issues #

  • Check printer status for errors (paper out, cover open, etc.)
  • Verify correct printer model is specified during initialization
  • For image printing issues, check image format and size

Android Build Issues #

  • Ensure your Android app's minSdkVersion is at least 21
  • Check that all required permissions are in your AndroidManifest.xml

API Reference #

FlutterBixolonPrinter #

Main class for interacting with Bixolon printers.

Scanning Methods

  • static Future<List<PrinterDevice>> scanBluetoothPrinters()
  • static Future<List<PrinterDevice>> scanNetworkPrinters()
  • static Future<List<PrinterDevice>> scanPrinters(ConnectionType connectionType)

Connection Methods

  • static Future<bool> initialize({required String deviceName, required String address, required ConnectionType connectionType, required String model})
  • static Future<bool> connect({int timeout = 5000})
  • static Future<bool> disconnect()
  • static Future<PrinterStatus> getStatus()

Basic Printing Methods

  • static Future<bool> printText(String text)
  • static Future<bool> printImage(String imagePath, {int width = 0, Alignment alignment = Alignment.centerLeft})
  • static Future<bool> printImageBytes(Uint8List imageBytes, {int width = 0, Alignment alignment = Alignment.centerLeft})
  • static Future<bool> printBarcode(String data, BarcodeType type, {int height = 100, int width = 2, Alignment alignment = Alignment.center, BarcodeTextPosition textPosition = BarcodeTextPosition.below})
  • static Future<bool> printQRCode(String data, {int size = 200, Alignment alignment = Alignment.center})
  • static Future<bool> printCode128Barcode({required String barcodeData, String displayText = "", String leftText = "", double height = 38, bool displayValue = true, int textSize = 24, double leftTextWidth = 200, double leftTextPosition = 155, int printerWidth = 576,})

Advanced Printing Methods

  • static Future<bool> printFormattedText({required List<TextColumn> columns, int lineWidth = 48, bool addNewLine = true,})
  • static Future<bool> printMultipleColumn({required List<PrintColumn> columns, int canvasWidth = 832, double lineHeight = 1.5, Alignment alignment = Alignment.center, double padding = 10,})
  • static Future<bool> printReceipt({required List<Map<String, dynamic>> items, String? header, String? footer, String fontFamily = 'Siemreap', double fontSize = 20, FontWeight fontWeight = FontWeight.normal, int? printerWidth, double lineSpacing = 5.0, Map<String, double>? columnWidths,})
  • static Future<bool> printBlankLines(int numberOfLines)

Printer Control Methods

  • static Future<bool> feedToBlackMark()
  • static Future<bool> cutPaper({bool fullCut = true})

Enums #

  • ConnectionType: bluetooth, ethernet, usb, wifi, wifiDirect, bluetoothLE
  • BarcodeType: upca, upce, ean13, ean8, code39, itf, codabar, code93, code128, gs1DataBar, pdf417, qrCode, maxiCode, dataMatrix, ean128
  • BarcodeTextPosition: none, above, below
  • PrinterStatus: ready, coverOpen, paperEmpty, paperNearEmpty, batteryLow, offline, unknown
0
likes
120
points
17
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin for connecting to and printing with Bixolon thermal printers. Supports device discovery, connection management, text/image/barcode printing, and international character sets.

Repository (GitHub)
View/report issues

Topics

#printer #bluetooth #pos #thermal

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, path_provider, permission_handler

More

Packages that depend on flutter_bixolon_printer

Packages that implement flutter_bixolon_printer