A Flutter library for sending bytes to Bluetooth devices. Available on Android and iOS.
This library is only compatible for Android SDK 21+, so we need this in android/app/build.gradle
Android {
defaultConfig {
minSdkVersion 21
This library needs Bluetooth permissions on iOS, so we need this in ios/Runner/Info.plist
...
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Need BLE permission for connecting to BLE devices</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Need BLE permission for retrieving BLE devices info</string>
...
We'll need esc_pos_gen for this example.
First prepare a bill to be printed.
...
final List<PosComponent> components = <PosComponent>[
const PosText.center('My Store'),
const PosSeparator(),
PosListComponent.builder(
count: 20,
builder: (int i) {
return PosListComponent(
<PosComponent>[
PosRow.leftRightText(
leftText: 'Product $i',
leftTextStyles: const PosStyles.defaults(),
rightText: 'USD $i',
),
PosRow.leftRightText(
leftText: '1 x USD $i',
leftTextStyles: const PosStyles.defaults(
fontType: PosFontType.fontB,
),
rightText: 'USD $i',
rightTextStyles: const PosStyles.defaults(
align: PosAlign.right,
fontType: PosFontType.fontB,
),
),
],
);
},
),
const PosSeparator(),
PosBarcode.code128('{A12345'.split('')),
const PosSeparator(),
const PosFeed(1),
const PosCut(),
];
final Paper paper = Paper(
generator: generator,
components: components,
);
...
Retrieve available bluetooth devices.
final List<FluetoothDevice> devices = await Fluetooth().getAvailableDevices();
Connect to a printer.
...
final FluetoothDevice printer = devices.first;
await Fluetooth().connect(printer.id);
Prints the bill to the printer
...
await Fluetooth().sendBytes(paper.bytes);
...