حل الطباعة الحرارية في Flutter عبر USB ! دمج الطابعات الحرارية باحتراف داخل تطبيقك
في عصر التجارة الرقمية والتطبيقات المتنقلة، أصبحت الطباعة على الطابعات الحرارية (Thermal Printers) جزءًا أساسيًا من العمليات اليومية، خاصة في أنظمة نقاط البيع (POS). إذا كنت تبحث عن حل قوي وعملي لدعم بروتوكول ESC/POS داخل تطبيق Flutter، فإن مكتبة flutter_pos_printer_platform_monster توفر لك كل ما تحتاجه.
في هذا الدليل العملي سنتعرف على كيفية دمج الطباعة الحرارية داخل تطبيق Flutter مع دعم USB وBluetooth وWiFi خطوة بخطوة.
ما هي مكتبة flutter_pos_printer_platform_monster؟
تتيح لك المكتبة:
– اكتشاف الطابعات المتاحة – الاتصال بالطابعة – إرسال أوامر ESC/POS مباشرة – الطباعة باستخدام Raw Bytes
وهي متوافقة مع:
– Android – iOS – Windows
المزايا الرئيسية
دعم Android وiOS وWindows.
واجهات اتصال متعددة
USB – Bluetooth Classic – BLE – TCP/WiFi.
اكتشاف الطابعات
إمكانية البحث التلقائي عن الطابعات المتصلة.
إرسال بيانات ثنائية (Raw Bytes)
تحكم كامل في أوامر الطباعة.
دعم esc_pos_utils
لتوليد أوامر ESC/POS بسهولة ومرونة.
تثبيت المكتبة
flutter_pos_printer_platform_monster: ^1.6.0
أو تحميل النسخة المعدلة التي تم إصلاح مشاكل USB بها وإضافتها محليًا داخل المشروع:
أضف في pubspec.yaml:
flutter_pos_printer_platform_monster:
path: flutter_pos_printer_platform_monster-main
إعداد AndroidManifest للطباعة عبر USB
<receiver
android:name="com.sersoluciones.flutter_pos_printer_platform.usb.UsbReceiver"
android:exported="false">
<intent-filter>
<action android:name="android.hardware.usb.action.ACTION_USB_PERMISSION" />
<action android:name="android.hardware.usb.action.USB_DEVICE_DETACHED" />
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<action android:name="com.flutter_pos_printer.USB_PERMISSION" />
</intent-filter>
</receiver>
تهيئة الطابعة والاتصال التلقائي عبر USB
var printerManager = PrinterManager.instance;
List<PrinterDevice> devices = [];
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
_autoScanAndConnectUsb();
});
}
Future<void> _autoScanAndConnectUsb() async {
PrinterManager.instance.discovery(type: PrinterType.usb).listen((device) {
devices.add(device);
_connectDevice(device);
});
}
_connectDevice(PrinterDevice selectedPrinter) async {
try {
await PrinterManager.instance.connect(
type: PrinterType.usb,
model: UsbPrinterInput(
name: selectedPrinter.name,
productId: selectedPrinter.productId,
vendorId: selectedPrinter.vendorId
)
);
} catch (e) {
print(e);
}
}
الطباعة باستخدام ESC/POS
final profile = await CapabilityProfile.load();
final generator = Generator(PaperSize.mm80, profile!);
List<int> bytes = [];
طباعة نص:
bytes += generator.text(
"Geecoders",
styles: const PosStyles(align: PosAlign.center),
);
طباعة نص عربي:
bytes += generator.imageRaster(
await addText(
fontSize: 28,
align: TextAlign.right,
arabicText: "اسم التاجر : ${model.data.sellerName}",
),
);
طباعة صورة:
final logo = await imageFromNetwork(imageUrl: myLogo);
bytes += generator.imageRaster(logo, align: PosAlign.center);
طباعة صفوف وأعمدة بالعربية:
final rowImageBytes = await generateTableRowAsImage([...]);
final img.Image rowImage = img.decodeImage(rowImageBytes)!;
bytes += generator.imageRaster(rowImage);
حل مشكلة الطباعة عبر USB
النسخة المعدلة من flutter_pos_printer_platform_monster تعالج هذه المشكلة وتوفر استقرارًا أعلى للطباعة عبر USB.
بعد استخدامك لهذه المكتبة وإعدادها بشكل صحيح، ستتمكن من الطباعة بسهولة واحترافية داخل تطبيقك.
الخلاصة
مع دعم ESC/POS وإمكانية التحكم الكامل في الطباعة، يمكنك بناء نظام طباعة احترافي داخل تطبيق Flutter بدون تعقيد.
يمكنك ايضا الاطلاع علي المقاله السابقه وهيا : شرح طباعة فاتوره للمتاجر من خلال Flutter عن طريق البلوتوث
حل الطباعة الحرارية في Flutter


