import 'dart:typed_data'; import 'package:charset_converter/charset_converter.dart'; import 'package:esc_pos_bluetooth/esc_pos_bluetooth.dart'; import 'package:esc_pos_utils/esc_pos_utils.dart'; import 'package:flutter/services.dart'; import 'package:flutter_bluetooth_basic/flutter_bluetooth_basic.dart'; import 'package:image/image.dart'; import 'package:satu/core/models/settings/printer_setting.dart'; Future> getReceipt(String encoding, String paperSize) async { final profile = await CapabilityProfile.load(); final generator = Generator( paperSize == PrinterConst.paperSize58mm ? PaperSize.mm58 : PaperSize.mm80, profile, ); String codeTable = 'CP866'; if(encoding == PrinterConst.encodingCP866) { codeTable = 'CP866'; } else if(encoding == PrinterConst.encodingCP1251) { codeTable = 'CP1251'; } List bytes = []; generator.setGlobalCodeTable(codeTable); final Uint8List firstCol = await CharsetConverter.encode(encoding.toLowerCase(), 'Тестовый чек'); bytes += generator.textEncoded(firstCol); bytes += generator.text('CENTER', styles: const PosStyles(align: PosAlign.center)); bytes += generator.text('Right', styles: const PosStyles(align: PosAlign.right), linesAfter: 1); bytes += generator.row([ PosColumn( text: 'col3', width: 3, styles: const PosStyles(align: PosAlign.center, underline: true), ), PosColumn( text: 'col6', width: 6, styles: const PosStyles(align: PosAlign.center, underline: true), ), PosColumn( text: 'col3', width: 3, styles: const PosStyles(align: PosAlign.center, underline: true), ), ]); bytes += generator.text( 'Text size 200%', styles: const PosStyles( height: PosTextSize.size2, width: PosTextSize.size2, ), ); // Print barcode final List barData = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 4]; bytes += generator.barcode(Barcode.upcA(barData)); bytes += generator.feed(2); bytes += generator.cut(); return bytes; } Future> getReceiptImg(String paperSize) async { final profile = await CapabilityProfile.load(); final generator = Generator( paperSize == PrinterConst.paperSize58mm ? PaperSize.mm58 : PaperSize.mm80, profile, ); List bytes = []; final ByteData data = await rootBundle.load('assets/images/aman_kassa_check.png'); final Uint8List imgBytes = data.buffer.asUint8List(); final Image? image = decodeImage(imgBytes); // Using `ESC *` bytes += generator.image(image!); bytes += generator.feed(2); bytes += generator.cut(); return bytes; } BluetoothDevice printerDeviceToBluetoothDevice(PrinterDevice device) { return BluetoothDevice() ..name = device.name ..address = device.address ..connected = device.connected ..type = device.type; } PrinterDevice bluetoothDeviceToPrinterDevice(PrinterBluetooth device) { return PrinterDevice() ..name = device.name ..address = device.address ..type = device.type; }