RocketView constructor

RocketView({
  1. Key? key,
  2. required RocketModel model,
  3. required Widget builder(
    1. BuildContext
    ),
  4. dynamic call() = _myDefaultFunc,
  5. CallType callType = CallType.callAsFuture,
  6. int secondsOfStream = 1,
  7. Widget? loader,
  8. Widget onError(
    1. RocketException error,
    2. dynamic reload()
    )?,
})

RocketView

انشاء البناء الخاص باعادة بناء المحتويات الخاصة به.

model

النموذج الذي يحتوي على البيانات المراد تجديدها

builder

البناء دالة ترجع المحتويات المراد اعادة بناءها لتغيير قيمها

loader

الجزء الخاص بانتظار تحميل البيانات و هو اختياري

call

الدالة الخاصة بطلب البيانات من لخادم

callType

طريقة استدعاء الدالة

secondsOfStream

في حالة اختيار call عدد الثواني لاعادة استدعاء دالة CallType.callAsStream

onError لبناء الواجهة الخاصة باظهار اي خطأ ويتم تمرير كائن يحمل الاخطأ التي حدثت

Implementation

RocketView({
  Key? key,
  required this.model,
  required this.builder,
  this.call = _myDefaultFunc,
  this.callType = CallType.callAsFuture,
  this.secondsOfStream = 1,
  this.loader,
  this.onError,
}) {
  model.load(true);

  /// call التحقق من طريقة الاستدعاء لدالة
  switch (callType) {
    case CallType.callAsFuture:
      Future.value(call()).whenComplete(() => model.load(false));
      break;
    case CallType.callIfModelEmpty:
      if (!model.existData) {
        Future.value(call()).whenComplete(() => model.load(false));
      }
      break;
    case CallType.callAsStream:
      Future.value(call()).whenComplete(() => model.load(false));
      Timer.periodic(Duration(seconds: secondsOfStream), (timer) {
        model.loadingChecking(true);
        call();
        if (!model.hasListener()) timer.cancel();
      });
      break;
  }
}