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.)
[ ] print x,y positions
[ ] set paper size
[ ] more print examples
3.0.0(flutter 2.x)
2.0.0(flutter 1.12)
1.2.0(flutter 1.9)
| Android | iOS | Description | |
|---|---|---|---|
| scan | ✅ | ✅ | Starts a scan for Bluetooth Low Energy devices. |
| connect | ✅ | ✅ | Establishes a connection to the device. |
| disconnect | ✅ | ✅ | Cancels an active or pending connection to the device. |
| state | ✅ | ✅ | Stream of state changes for the Bluetooth Device. |
| print test message | ✅ | ✅ | print device test message. |
| print text | ✅ | ✅ | print custom text, support layout. |
| print image | ✅ | ✅ | print image. |
| print qrcode | ✅ | ✅ | print qrcode,support change size. |
| print barcode | ✅ | ✅ | print barcode |
To use this plugin :
- add the dependency to your pubspec.yaml file.
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;// 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(),
),
),await bluetoothPrint.connect(_device);await bluetoothPrint.disconnect(); 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.
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.
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);[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>
you can join this QQ group, feedback your problem