Как открыть другую страницу после просмотра рекламы с вознаграждением во Flutter?

#flutter #redirect #admob #google-ads-api #admob-rewardedvideoad

Вопрос:

Приложение Flutter. Одна кнопка, которая ведет на 2-ю страницу, где находится содержимое.

  • Пользователь нажимает на кнопку и должен посмотреть видеорекламу(объявление с вознаграждением).

После завершения видеорекламы > пользователь может открыть 2-ю страницу / или 2-я страница будет автоматически открыта, когда он нажмет » x » на готовом видеорекламе.

Мой вопрос > как это сделать? Как будет выглядеть код и что использовать? Спасибо!

Комментарии:

1. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.

Ответ №1:

Используйте следующий код на своей первой странице над методом сборки

 late RewardedAd _rewardedAd;
  bool _isRewardedAdReady = false;

  // TODO: Implement _loadRewardedAd()
  void _loadRewardedAd() {
    RewardedAd.load(
      adUnitId: AdHelper.rewardedAdUnitId,
      request: AdRequest(),
      rewardedAdLoadCallback: RewardedAdLoadCallback(
        onAdLoaded: (ad) {
          this._rewardedAd = ad;

          ad.fullScreenContentCallback = FullScreenContentCallback(
            onAdDismissedFullScreenContent: (ad) {
              setState(() {
                _isRewardedAdReady = false;
              });
              _loadRewardedAd();
            },
          );

          setState(() {
            _isRewardedAdReady = true;
          });
        },
        onAdFailedToLoad: (err) {
          print('Failed to load a rewarded ad: ${err.message}');
          setState(() {
            _isRewardedAdReady = false;
          });
        },
      ),
    );
  }
 

После этого инициализируйте и утилизируйте rewardedad, как

 @override
  void initState() {
    _loadRewardedAd();
    super.initState();
  }

  @override
  void dispose() {
    _rewardedAd.dispose();
    super.dispose();
  }
 

Теперь вызовите измененное объявление с переходом на другую страницу

 GestureDetector(
       onTap: () {
        if(_isRewardedAdReady){
        _rewardedAd.show(onUserEarnedReward:
                           (RewardedAd ad, RewardItem reward) {
                                print(
                                    '$ad with reward $RewardItem(${reward.amount}, ${reward.type}');
       });
     }
     Navigator.pushReplacement(
     context, MaterialPageRoute(builder: (context)=>SecondPage()));
        },
          child: CustomButton(text:'GoTo Second Page')
         ),
 

для лучшего понимания перейдите сюда