import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'enums/multi_byte_encoding.dart'; import 'enums/printer_alignment.dart'; import 'enums/serial_flow_control.dart'; import 'enums/serial_parity.dart'; import 'enums/serial_stop_bits.dart'; import 'printer_method_channel.dart'; /// Platform interface for printer operations. /// /// Concrete implementations (e.g., [MethodChannelPrinter]) provide /// the actual platform-specific behavior. abstract class PrinterPlatform extends PlatformInterface { /// Constructs a PrinterPlatform. PrinterPlatform() : super(token: _token); static final Object _token = Object(); static PrinterPlatform _instance = MethodChannelPrinter(); /// The default instance of [PrinterPlatform] to use. /// /// Defaults to [MethodChannelPrinter]. static PrinterPlatform get instance => _instance; /// Platform-specific implementations should set this with their own /// platform-specific class that extends [PrinterPlatform] when /// they register themselves. static set instance(PrinterPlatform instance) { PlatformInterface.verifyToken(instance, _token); _instance = instance; } /// Returns the platform version string. Future getPlatformVersion() { throw UnimplementedError('getPlatformVersion() has not been implemented.'); } /// Opens a serial (COM) port with the specified parameters. /// /// Returns an integer handle on success. /// Throws [PrinterException] on failure. Future openComPort({ required String portName, required int baudRate, int dataBits = 8, SerialParity parity = SerialParity.none, SerialStopBits stopBits = SerialStopBits.one, SerialFlowControl flowControl = SerialFlowControl.none, bool autoReplyMode = true, }) { throw UnimplementedError('openComPort() has not been implemented.'); } /// Opens a USB port with the specified parameters. /// /// Returns an integer handle on success. /// Throws [PrinterException] on failure. Future openUsbPort({ required String portName, bool autoReplyMode = true, }) { throw UnimplementedError('openUsbPort() has not been implemented.'); } /// Closes a port by its integer handle. /// /// Returns true if successfully closed, false otherwise. Future closePort(int handle) { throw UnimplementedError('closePort() has not been implemented.'); } /// Checks if a port is currently opened. /// /// Returns true if the port is open, false otherwise. Future isPortOpened(int handle) { throw UnimplementedError('isPortOpened() has not been implemented.'); } /// Enumerates available serial (COM) ports. /// /// Returns a list of port name strings. Future> enumComPorts() { throw UnimplementedError('enumComPorts() has not been implemented.'); } /// Enumerates available USB ports. /// /// Returns a list of port name strings. Future> enumUsbPorts() { throw UnimplementedError('enumUsbPorts() has not been implemented.'); } /// Sets the printer to multi-byte encoding mode. /// /// Returns true on success. Future setMultiByteMode(int handle) { throw UnimplementedError('setMultiByteMode() has not been implemented.'); } /// Sets the multi-byte character encoding. /// /// Returns true on success. Future setMultiByteEncoding(int handle, MultiByteEncoding encoding) { throw UnimplementedError('setMultiByteEncoding() has not been implemented.'); } /// Prints text using UTF-8 encoding. /// /// Returns true on success. Future printText(int handle, String text) { throw UnimplementedError('printText() has not been implemented.'); } /// Sets text alignment. /// /// Returns true on success. Future setAlignment(int handle, PrinterAlignment alignment) { throw UnimplementedError('setAlignment() has not been implemented.'); } /// Sets text scale (width and height magnification). /// /// Both scales must be between 1 and 8. /// Returns true on success. Future setTextScale(int handle, {required int widthScale, required int heightScale}) { throw UnimplementedError('setTextScale() has not been implemented.'); } /// Sets text bold on or off. /// /// Returns true on success. Future setTextBold(int handle, bool bold) { throw UnimplementedError('setTextBold() has not been implemented.'); } /// Sets text underline level. /// /// 0 = no underline, 1 = 1-dot underline, 2 = 2-dot underline. /// Returns true on success. Future setTextUnderline(int handle, int underline) { throw UnimplementedError('setTextUnderline() has not been implemented.'); } /// Feeds paper by specified number of lines. /// /// Returns true on success. Future feedLine(int handle, int numLines) { throw UnimplementedError('feedLine() has not been implemented.'); } /// Feeds paper by specified number of dots. /// /// Returns true on success. Future feedDot(int handle, int numDots) { throw UnimplementedError('feedDot() has not been implemented.'); } /// Performs a half cut of the paper. /// /// Returns true on success. Future halfCutPaper(int handle) { throw UnimplementedError('halfCutPaper() has not been implemented.'); } /// Performs a full cut of the paper. /// /// Returns true on success. Future fullCutPaper(int handle) { throw UnimplementedError('fullCutPaper() has not been implemented.'); } }