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

PlatformAndroid

A comprehensive Flutter plugin for Sunmi printer integration. Supports text printing with custom styles, image printing, table/row printing, and provides both original API compatibility and new stream [...]

flutter_sunmi_printer_old #

A Flutter plugin for Sunmi thermal printers. This plugin provides a comprehensive interface for printing text, images, and formatted content on Sunmi thermal printers.

Features #

  • Text Printing: Print text with customizable alignment, font size, bold, and underline
  • Row Printing: Print formatted table rows with multiple columns
  • Image Printing: Print images from base64 encoded data
  • Printer Control: Start, stop, and check printing status
  • Formatting: Bold, underline, and empty line controls
  • Modern Flutter 3.32.6+ Support: Built with the latest Flutter plugin architecture
  • Backward Compatibility: Supports both original API style and new API

Installation #

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

dependencies:
  flutter_sunmi_printer_old: ^0.0.1

Usage #

Basic Setup #

import 'package:flutter_sunmi_printer_old/flutter_sunmi_printer_old.dart';

final printer = FlutterSunmiPrinterOld();
// Simple text printing with styles
await printer.text(
  'Hello World',
  styles: SunmiStyles(
    align: SunmiAlign.center,
    bold: true,
    size: SunmiSize.lg,
  ),
  linesAfter: 1,
);

// Print horizontal separator
await printer.hr(linesAfter: 1);

// Print table row
await printer.row(
  cols: [
    SunmiCol(text: 'Item', width: 8, align: SunmiAlign.left),
    SunmiCol(text: 'Price', width: 2, align: SunmiAlign.right),
    SunmiCol(text: 'Qty', width: 2, align: SunmiAlign.right),
  ],
  bold: true,
  linesAfter: 1,
);

// Print image
await printer.image(
  imageBase64String,
  align: SunmiAlign.center,
);

New API Style #

// Simple text printing
await printer.printText(text: 'Hello World');

// Formatted text printing
await printer.printText(
  text: 'Centered Bold Text',
  align: 1, // 0=left, 1=center, 2=right
  bold: true,
  underline: true,
  size: 32,
  linesAfter: 2,
);

// Print table row
final rowData = [
  {'text': 'Item', 'width': 16, 'align': 0},
  {'text': 'Price', 'width': 8, 'align': 2},
  {'text': 'Qty', 'width': 8, 'align': 2},
];

await printer.printRow(
  cols: rowData.toString(),
  bold: true,
  linesAfter: 1,
);

// Print image
await printer.printImage(
  base64: imageBase64String,
  align: 1, // Center the image
);

Printer Control #

// Start printing
await printer.startPrint();

// Check if printer is printing
bool isPrinting = await printer.isPrinting();

// Stop printing
await printer.stopPrint();

// Reset printer
await printer.reset();

Formatting Controls #

// Bold controls
await printer.boldOn();
await printer.boldOff();

// Underline controls
await printer.underlineOn();
await printer.underlineOff();

// Empty lines
await printer.emptyLines(3);

Complete Example (Original API Style) #

Future<void> printReceipt() async {
  try {
    // Reset and start printing
    await printer.reset();
    await printer.startPrint();
    
    // Print header
    await printer.text(
      'RECEIPT',
      styles: SunmiStyles(
        align: SunmiAlign.center,
        bold: true,
        size: SunmiSize.lg,
      ),
      linesAfter: 1,
    );
    
    // Print separator
    await printer.hr(linesAfter: 1);
    
    // Print items
    final items = [
      ['Coffee', '\$3.50', '2'],
      ['Tea', '\$2.00', '1'],
    ];
    
    for (final item in items) {
      await printer.row(
        cols: [
          SunmiCol(text: item[0], width: 8, align: SunmiAlign.left),
          SunmiCol(text: item[1], width: 2, align: SunmiAlign.right),
          SunmiCol(text: item[2], width: 2, align: SunmiAlign.right),
        ],
        linesAfter: 1,
      );
    }
    
    // Print total
    await printer.text(
      'Total: \$8.50',
      styles: SunmiStyles(
        align: SunmiAlign.right,
        bold: true,
        size: SunmiSize.md,
      ),
      linesAfter: 2,
    );
    
    // Stop printing
    await printer.stopPrint();
  } catch (e) {
    print('Print error: $e');
  }
}

Enums and Styles #

The plugin provides enums for better type safety:

// Alignment options
SunmiAlign.left    // 0
SunmiAlign.center  // 1
SunmiAlign.right   // 2

// Font size options
SunmiSize.xs  // 14
SunmiSize.sm  // 18
SunmiSize.md  // 24
SunmiSize.lg  // 36
SunmiSize.xl  // 42

// Style combinations
SunmiStyles(
  bold: true,
  underline: false,
  align: SunmiAlign.center,
  size: SunmiSize.lg,
)

Android Permissions #

The plugin requires the following permissions in your Android app:

<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" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Dependencies #

The plugin includes the following Sunmi printer libraries:

  • core-3.4.0.jar
  • payLib.aar

Migration from tablemi #

This plugin is a modernized version of the original tablemi flutter_sunmi_printer plugin, updated for Flutter 3.32.6+ with the following improvements:

  • Modern Flutter plugin architecture
  • Better error handling
  • Improved type safety
  • Cleaner API design
  • Better documentation
  • Backward compatibility with original API style

Migration Guide #

If you're migrating from the original tablemi plugin, you can use the same API:

// Old code (still works)
await printer.text('Hello', styles: SunmiStyles(bold: true));
await printer.row(cols: [SunmiCol(text: 'Item', width: 8)]);
await printer.image(base64String);

// New code (also available)
await printer.printText(text: 'Hello', bold: true);
await printer.printRow(cols: rowData.toString());
await printer.printImage(base64: base64String);

Getting Started #

For more information on how to integrate this plugin into your Flutter app, see the example directory.

License #

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

0
likes
150
points
12
downloads

Publisher

unverified uploader

Weekly Downloads

A comprehensive Flutter plugin for Sunmi printer integration. Supports text printing with custom styles, image printing, table/row printing, and provides both original API compatibility and new streamlined API. Perfect for POS applications and receipt printing.

Repository (GitHub)
View/report issues

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on flutter_sunmi_printer_old

Packages that implement flutter_sunmi_printer_old