Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - tradedepot/bluetooth_print: a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120) · GitHub
Skip to content

Repository files navigation

pub package

Introduction

BluetoothPrint is a bluetooth plugin for Flutter, a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.(for example, Gprinter pt-280、pt-380、gp-1324、gp-2120 eg.)

Underway(please suggest)

[ ] print x,y positions
[ ] set paper size
[ ] more print examples

verison

3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)

Features

AndroidiOSDescription
scanStarts a scan for Bluetooth Low Energy devices.
connectEstablishes a connection to the device.
disconnectCancels an active or pending connection to the device.
stateStream of state changes for the Bluetooth Device.
print test messageprint device test message.
print textprint custom text, support layout.
print imageprint image.
print qrcodeprint qrcode,support change size.
print barcodeprint barcode

Usage

Example

To use this plugin :

dependencies:
flutter:
sdk: flutterbluetooth_print:
  • init a BluetoothPrint instance
import'package:bluetooth_print/bluetooth_print.dart';
import'package:bluetooth_print/bluetooth_print_model.dart';
BluetoothPrint bluetoothPrint =BluetoothPrint.instance;

scan

// begin scan
bluetoothPrint.startScan(timeout:Duration(seconds:4));
// get devicesStreamBuilder<List<BluetoothDevice>>(
stream: bluetoothPrint.scanResults,
initialData: [],
builder: (c, snapshot) =>Column(
children: snapshot.data.map((d) =>ListTile(
title:Text(d.name??''),
subtitle:Text(d.address),
onTap: () async {
setState(() {
_device = d;
});
},
trailing: _device!=null&& _device.address == d.address?Icon(
Icons.check,
color:Colors.green,
):null,
)).toList(),
),
),

connect

await bluetoothPrint.connect(_device);

disconnect

await bluetoothPrint.disconnect();

listen state

 bluetoothPrint.state.listen((state) {
print('cur device status: $state');
# bluetooth_print
switch (state) {
caseBluetoothPrint.CONNECTED:setState(() {
_connected =true;
});
break;
caseBluetoothPrint.DISCONNECTED:setState(() {
_connected =false;
});
break;
default:break;
}
});

A new flutter plugin project.

print (esc command, receipt mode)

Map<String, dynamic> config =Map();
List<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, content:'A Title', weight:1, align:LineText.ALIGN_CENTER,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent left', weight:0, align:LineText.ALIGN_LEFT,linefeed:1));
list.add(LineText(type:LineText.TYPE_TEXT, content:'this is conent right', align:LineText.ALIGN_RIGHT,linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_BARCODE, content:'A12312112', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
list.add(LineText(type:LineText.TYPE_QRCODE, content:'qrcode i', size:10, align:LineText.ALIGN_CENTER, linefeed:1));
list.add(LineText(linefeed:1));
## GettingStartedByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list.add(LineText(type:LineText.TYPE_IMAGE, content: base64Image, align:LineText.ALIGN_CENTER, linefeed:1));
This project is a starting point for a Flutter
[plug-in package](https://flutter.dev/developing-packages/),
a specialized package that includes platform-specific implementation code forAndroid and/or iOS.
await bluetoothPrint.printReceipt(config, list);

For help getting started with Flutter, view our online documentation, which offers tutorials, samples, guidance on mobile development, and a full API reference.

print (tsc command, label mode)

Map<String, dynamic> config =Map();
config['width'] =40; // 标签宽度,单位mm
config['height'] =70; // 标签高度,单位mm
config['gap'] =2; // 标签间隔,单位mm// x、y坐标位置,单位dpi,1mm=8dpiList<LineText> list =List();
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:10, content:'A Title'));
list.add(LineText(type:LineText.TYPE_TEXT, x:10, y:40, content:'this is content'));
list.add(LineText(type:LineText.TYPE_QRCODE, x:10, y:70, content:'qrcode i\n'));
list.add(LineText(type:LineText.TYPE_BARCODE, x:10, y:190, content:'qrcode i\n'));
List<LineText> list1 =List();
ByteData data =await rootBundle.load("assets/images/guide3.png");
List<int> imageBytes = data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
String base64Image =base64Encode(imageBytes);
list1.add(LineText(type:LineText.TYPE_IMAGE, x:10, y:10, content: base64Image,));
await bluetoothPrint.printLabel(config, list);
await bluetoothPrint.printLabel(config, list1);

Troubleshooting

ios import third party library

[Please Read link: https://stackoverflow.com/questions/19189463/cocoapods-podspec-issue)
*.podspec add:

# .a filename must begin with lib, eg. 'libXXX.a'
s.vendored_libraries = '**/*.a'

error:'State restoration of CBCentralManager is only allowed for applications that have specified the "bluetooth-central" background mode'

info.plist add:

<key>NSBluetoothAlwaysUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Allow App use bluetooth?</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>

FAQ Support

you can join this QQ group, feedback your problem

Thanks For

About

a flutter plugin connect to bluetooth thermal printer support both Android and IOS (eg. Gprinter pt-380、gp-1324、gp-2120)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages