writeBytes method
Implementation
@override
Future writeBytes(List<int> data, {int? vendorId, int? productId}) async {
if (Platform.isWindows) {
await connect();
// Inform the spooler the document is beginning.
final dwJob = StartDocPrinter(hPrinter, 1, docInfo!);
if (dwJob == 0) {
ClosePrinter(hPrinter);
}
// Start a page.
if (StartPagePrinter(hPrinter) == 0) {
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
// Send the data to the printer.
final lpData = data.toUint8();
dwCount = data.length;
if (WritePrinter(hPrinter, lpData, dwCount!, dwBytesWritten!) == 0) {
EndPagePrinter(hPrinter);
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
// End the page.
if (EndPagePrinter(hPrinter) == 0) {
EndDocPrinter(hPrinter);
ClosePrinter(hPrinter);
}
// Inform the spooler that the document is ending.
if (EndDocPrinter(hPrinter) == 0) {
ClosePrinter(hPrinter);
}
// Check to see if correct number of bytes were written.
if (dwBytesWritten!.value != dwCount) {}
// Tidy up the printer handle.
ClosePrinter(hPrinter);
// await disconnect();
} else if (Platform.isAndroid) {
try {
await connect();
var bytes = Uint8List.fromList(data);
int max = 16384;
/// maxChunk limit on android
var datas = bytes.chunkBy(max);
for (var data in datas) {
await usbPrinter.write(Uint8List.fromList(data));
}
await usbPrinter.close();
} catch (e) {
return Future.error(e.toString());
}
}
}