الانتقال إلى المحتوى الرئيسي
يعمل التحكم بالإصدارات على iOS وأندرويد وmacOS وWindows والويب. لمعرفة ما يقدّمه وكيف تضبط القواعد في لوحة التحكم، راجع التحكم بالإصدارات.

الإعداد

يعمل التحكم بالإصدارات افتراضياً بمجرد تشغيل Lerix.init، مع الشاشات الجاهزة، ولا يلزمك إضافة شيء للسلوك الافتراضي. لتغييره، مرّر LerixAppControlOptions:
main.dart

الإصدار

ترسل الحزمة الإصدار ورقم البناء من pubspec.yaml (فالقيمة version: 3.4.0+412 ترسل 3.4.0 ورقم البناء 412). وعلى الويب ترسل المنصة web، ولا ترسل الإصدار إلا إذا احتوى البناء على version.json (ينشئه flutter build web). تقارن القواعد أرقام البناء حين تتوفر لدى الطرفين.

تغييرات فورية بالإشعار الصامت

حين تبدأ نافذة صيانة أو تنهيها، أو تفرض تحديثاً، يرسل Lerix إشعاراً صامتاً لتتحدث التطبيقات العاملة في الخلفية أيضاً. يصل إلى التطبيقات التي تستدعي Lerix.notifications.init() كما في الإشعارات، وتتولى الحزمة معالجته: لا يُعرض أبداً، ولا يُمرَّر إلى setOnNotificationReceived. وعلى iOS وmacOS يتطلب الدالة lerix_didReceiveRemoteNotification في AppDelegate كما في ذلك الدليل، ووضع الخلفية Remote notifications. ومن دون الإشعارات، وعلى الويب، تلتقط التطبيقات التغيير عند تحققها التالي.

الشاشات الجاهزة

لا حاجة إلى إضافة أي widget. تُدرج الحزمة شاشاتها في الـ Overlay الأعلى في تطبيقك، فوق كل مسار يضيفه الـ navigator.
  • الصيانة: تغطي التطبيق كله، مع زر حاول مرة أخرى. وعلى أندرويد يرسل زر الرجوع التطبيق إلى الخلفية.
  • التحديث الإلزامي: الحاوية نفسها على كامل الشاشة، مع ملاحظات الإصدار تحت «ما الجديد» وزر تحديث يفتح المتجر (الويب: إعادة التحميل).
  • مطالبة التحديث: نافذة حوار (الويب: شريط أسفل الصفحة) فيها تحديث ولاحقاً، وتخطي هذا الإصدار إن كان مسموحاً. تظهر مرة واحدة على الأكثر في كل تشغيل للتطبيق، ويغلقها زر الرجوع دون حفظ لاحقاً.
تتبع الشاشات سمة تطبيقك ولغة الجهاز (العربية من اليمين إلى اليسار، أو الإنجليزية). وإن كنت تستخدم LerixFeedback، فإن theme وlocale الخاصين به يسريان هنا أيضاً. أما العناصر التي تضعها فوق الـ navigator في MaterialApp.builder فلا تُغطّى. راجع واجهة مخصصة لمعرفة متى تظهر كل شاشة.

شاشاتك الخاصة

اضبط ui: false، ثم استمع إلى Lerix.appControl، وهو ValueListenable<LerixAppControlState>. للحالة الأجزاء update (LerixUpdateInfo) وmaintenance (LerixMaintenanceInfo) وsdk (LerixSdkControl)، وكل منها null حين لا ينطبق شيء (الحقول في الحالة).
release_gate.dart
والخاصية update.isRequired اختصار للفحص نفسه. وللمطالبة غير الإلزامية، استدعِ الدوال المساعدة من نافذة الحوار الخاصة بك:
ويُصدر Lerix.appControl.stream كل حالة جديدة، إن كنت تفضّل الـ stream.

التحقق الآن

تتجاهل refresh() (أو اسمها البديل checkNow()) مدة صلاحية الإجابة المحفوظة، فتجلب الحالة وتعيدها. ولا ترمي استثناءً أبداً: دون اتصال تعيد الحالة المحفوظة. والحزمة تتحقق أصلاً عند التشغيل، وعند عودة التطبيق إلى الواجهة، وكل دقيقة أثناء الطوارئ (راجع وصول التغييرات والعمل دون اتصال).