bluetooth_print_plus

Creator: coderz1093

Last updated:

Add to Cart

Description:

bluetooth print plus

Introduction #
Bluetooth Print Plus is a Bluetooth plugin used to print thermal printers in Flutter,
a new mobile SDK to help developers build bluetooth thermal printer apps for both iOS and Android.

Important, important, important. First, you need to run the demo to confirm the printer command type!!!
now support tspl/tsc、cpcl、esc pos,
If this plugin is helpful to you, please give it a like,Thanks.

FAQ Support #


QQ group:904457621


TG group


Buy Me A Coffee/请我喝杯咖啡 #



Plan #



Version
plan




1.1.x
blue and tsc command, esc print image command


1.5.x
support cpcl command


2.x.x
improve esc command


3.x.x
support zpl command



Features #




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.



Usage #
Example
To use this plugin : #

add the dependency to your pubspec.yaml file.

dependencies:
flutter:
sdk: flutter
bluetooth_print_plus:
copied to clipboard
Add permissions for Bluetooth #
We need to add the permission to use Bluetooth and access location:
Android
In the android/app/src/main/AndroidManifest.xml let’s add:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
copied to clipboard
IOS
In the ios/Runner/Info.plist let’s add:
<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>
copied to clipboard
For location permissions on iOS see more at: https://developer.apple.com/documentation/corelocation/requesting_authorization_for_location_services
init a BluetoothPrint instance #
import 'package:bluetooth_print_plus/bluetooth_print_plus.dart';
import 'package:bluetooth_print/bluetooth_print_model.dart';


final _bluetoothPrintPlus = BluetoothPrintPlus.instance;
copied to clipboard
scan #
// begin scan
_bluetoothPrintPlus.startScan(timeout: const Duration(seconds: 30));

// get devices
StreamBuilder<List<BluetoothDevice>>(
stream: _bluetoothPrintPlus.scanResults,
initialData: [],
builder: (c, snapshot) => ListView(
children: snapshot.data!.map((d) => Container(
padding: const EdgeInsets.only(left: 10, right: 10, bottom: 5),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(d.name ?? ''),
Text(
d.address ?? 'null',
overflow: TextOverflow.ellipsis,
style: const TextStyle(
fontSize: 12,
color: Colors.grey
),
),
const Divider(),
],
)
),
const SizedBox(width: 10,),
ElevatedButton(
onPressed: () async {
_bluetoothPrintPlus.stopScan();
_bluetoothPrintPlus.connect(d);
_device = d;
},
child: const Text("connect"),
)
],
),
)).toList(),
),
)
copied to clipboard
connect #
await _bluetoothPrintPlus.connect(_device);
copied to clipboard
disconnect #
await _bluetoothPrintPlus.disconnect();
or
await BluetoothPrintPlus.instance.disconnect();
copied to clipboard
listen state #
_bluetoothPrintPlus.state.listen((state) {
print('cur device status: $state');
switch (state) {
case BluetoothPrint.CONNECTED:
setState(() {
_connected = true;
});
break;
case BluetoothPrint.DISCONNECTED:
setState(() {
_connected = false;
});
break;
default:
break;
}
});
copied to clipboard
print (tsc command, label mode) #
final ByteData bytes = await rootBundle.load("assets/dithered-image.png");
final Uint8List image = bytes.buffer.asUint8List();
await tscCommand.cleanCommand();
await tscCommand.cls();
await tscCommand.size(width: 76, height: 130);
await tscCommand.image(image: image, x: 50, y: 60);
await tscCommand.print(1);
final cmd = await tscCommand.getCommand();
if (cmd == null) return;
BluetoothPrintPlus.instance.write(cmd);
copied to clipboard
Troubleshooting #
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>
copied to clipboard
Thanks For #

flutter_blue

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.