andriyoganp / blue_print_pos

Helper to use bluetooth print in Android and iOS
Apache License 2.0
34 stars 78 forks source link
android ble bluetooth-thermal-printer dart flutter flutter-plugin ios pos

Introduction

This plugin to help use bluetooth printer in Android/iOS. Support for text, image, add new line or line dashed and QR.

Usage

Initialize

BluePrintPos bluePrintPos = BluePrintPos.instance; 

Scan bluetooth printer

bluePrintPos.scan();

Connect bluetooth printer

bluePrintPos.connect(device);

Print Text

In method .addText(text, {size, style, alignment}) you can modify size, style and alignment

ReceiptSectionText receiptText = ReceiptSectionText();
receiptText.addText('MY STORE', size: ReceiptTextSizeType.medium, style: ReceiptTextStyleType.bold);

Print text left right

receiptText.addLeftRightText('Time', '04/06/21, 10:00');

Print image

final ByteData logoBytes = await rootBundle.load('assets/logo.jpg');
receiptText.addImage(
  base64.encode(Uint8List.view(logoBytes.buffer)),
  width: 150,
);

Add new line

receiptText.addSpacer();

Add new line with dash

receiptText.addSpacer(useDashed: true);

Getting Started

Android

Change the minSdkVersion in android/app/build.gradle in 19

android {
  defaultConfig {
     minSdkVersion 19
  }
}

Add permission for Bluetooth and access location in android/app/src/main/AndroidManifest.xml

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

iOS

Add info key in ios/Runner/Info.plist

<key>NSBluetoothAlwaysUsageDescription</key>  
<string>Need BLE permission</string>  
<key>NSBluetoothPeripheralUsageDescription</key>  
<string>Need BLE permission</string>  
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>  
<string>Need Location permission</string>  
<key>NSLocationAlwaysUsageDescription</key>  
<string>Need Location permission</string>  
<key>NSLocationWhenInUseUsageDescription</key>  
<string>Need Location permission</string>

Thanks to

Reference and dependencies create this plugin