شارك المقالة
تعلم كيفية دمج الطابعات الحرارية داخل تطبيق Flutter باستخدام مكتبة flutter_pos_printer_platform_monster مع دعم USB وBluetooth وWiFi وبروتوكول ESC/POS. شرح عملي شامل مع أمثلة كود جاهزة وحل نهائي لمشكلة الطباعة عبر USB في أنظمة نقاط البيع POS.

حل الطباعة الحرارية في Flutter عبر USB ! دمج الطابعات الحرارية باحتراف داخل تطبيقك

حل الطباعة الحرارية في Flutter عبر USB ! دمج الطابعات الحرارية باحتراف داخل تطبيقك


في عصر التجارة الرقمية والتطبيقات المتنقلة، أصبحت الطباعة على الطابعات الحرارية (Thermal Printers) جزءًا أساسيًا من العمليات اليومية، خاصة في أنظمة نقاط البيع (POS). إذا كنت تبحث عن حل قوي وعملي لدعم بروتوكول ESC/POS داخل تطبيق Flutter، فإن مكتبة flutter_pos_printer_platform_monster توفر لك كل ما تحتاجه.

في هذا الدليل العملي سنتعرف على كيفية دمج الطباعة الحرارية داخل تطبيق Flutter مع دعم USB وBluetooth وWiFi خطوة بخطوة.
مكتبة flutter_pos_printer_platform_monster هي نسخة معدلة (Fork) من المكتبة الأصلية flutter_pos_printer_platform، وتم تحسينها لدعم سيناريوهات أكثر وحل مشاكل متعددة خاصة في الطباعة عبر USB.

تتيح لك المكتبة:
– اكتشاف الطابعات المتاحة – الاتصال بالطابعة – إرسال أوامر 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

أضف التالي قبل إغلاق وسم </application> مباشرة:

<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 تدعم WiFi وBluetooth فقط، بينما دعم USB يكون غير مستقر أو معقد.

النسخة المعدلة من flutter_pos_printer_platform_monster تعالج هذه المشكلة وتوفر استقرارًا أعلى للطباعة عبر USB.

بعد استخدامك لهذه المكتبة وإعدادها بشكل صحيح، ستتمكن من الطباعة بسهولة واحترافية داخل تطبيقك.

الخلاصة

إذا كنت تطور نظام نقاط بيع (POS) أو تطبيق مبيعات وتحتاج إلى دعم الطباعة الحرارية عبر USB وBluetooth وWiFi، فإن مكتبة flutter_pos_printer_platform_monster توفر لك حلاً عمليًا ومستقرًا.

مع دعم ESC/POS وإمكانية التحكم الكامل في الطباعة، يمكنك بناء نظام طباعة احترافي داخل تطبيق Flutter بدون تعقيد.

يمكنك ايضا الاطلاع علي المقاله السابقه وهيا : شرح طباعة فاتوره للمتاجر من خلال Flutter عن طريق البلوتوث
حل الطباعة الحرارية في Flutter
شاهد أيضًا
مقالات ذات صلة
شرح استخدام async و awite في Flutter بسهوله

  شرح استخدام async و awite في Flutter بسهولهفكرة الasync و awite تعنى ببساطة انتظر…

مجموعة من اكواد البايثون التي تجعل منك شخص محترف في اللغة | A set of Python codes that make you a professional in the language

مجموعة من اكواد البايثون التي تجعل منك شخص محترف في اللغة موقع ومدونه جي كودرس…

كود بلغة الجافا يقوم بطباعة قلب – Print heart star pattern in java

  مرحبا بكم اصدقائي من جديد وفي تدوينه اليوم سوف نتعرف على كود بالجافا يقوم…

🚫 مانع الإعلانات مفعل

يجب إيقاف مانع الإعلانات لاستكمال تصفح الموقع