showRewardAds function

dynamic showRewardAds({
  1. required BuildContext context,
  2. Function? callback,
  3. bool isCompulsory = false,
  4. Function? onFailedCallback,
  5. Function? onSkippedCallback,
})

Implementation

showRewardAds(
    {required BuildContext context,
    Function? callback,
    bool isCompulsory = false,
    Function? onFailedCallback,
    Function? onSkippedCallback}) async {

  final isReward = ((_settings?.adSetting?.rewardAdsInterval ?? 0) >
      0 &&
      (_settings?.adSetting?.rewardAdsIntervalCount ?? 0) %
          (_settings?.adSetting?.rewardAdsInterval ?? 0) ==
          0) ||
      isCompulsory;

  if (!isReward) {
    incrementRewardCounter();
    if (onFailedCallback != null) {
      onFailedCallback();
    }
    return;
  }

  showProgressbarDialog(context);
  resetTimerDelayed();
  Timer? timer;
  timer = Timer(
      Duration(milliseconds: _settings?.adSetting?.adsTimeout ?? 3000), () {
    timer?.cancel();
    Navigator.pop(context);
    if (onFailedCallback != null) {
      onFailedCallback();
    }
  });
  loadRewardAds(
      isCompulsory: isCompulsory,
      onAdLoadedCallback: () {
        if (timer?.isActive == true) {
          int remainingTime =
              (_settings?.adSetting?.adsLoadingTimeout ?? 1500) -
                  (timer?.tick ?? 0);
          if (remainingTime > 0) {
            Future.delayed(
                Duration(milliseconds: remainingTime),
                () => {
                      if (timer?.isActive == true)
                        {
                          timer?.cancel(),
                          Navigator.pop(context),
                          _showRewardedAd(
                              callback, onFailedCallback, onSkippedCallback)
                        }
                    });
          } else {
            if (timer?.isActive == true) {
              timer?.cancel();
              Navigator.pop(context);
              _showRewardedAd(callback, onFailedCallback, onSkippedCallback);
            }
          }
        }
      },
      onAdFailedCallback: () => {
            if (timer?.isActive == true)
              {
                Future.delayed(
                    Duration(milliseconds: _TOTALDELAYD),
                    () => {
                          if (timer?.isActive == true)
                            {
                              timer?.cancel(),
                              Navigator.pop(context),
                              if (onFailedCallback != null) {onFailedCallback()}
                            }
                        })
              }
          });
}