• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 Flutter 게시판 InterstitialAd를 dispose 한 후 화면 되돌리면 에러 발생.

InterstitialAd를 dispose 한 후 화면 되돌리면 에러 발생.

  • 이 주제에는 2개 답변, 2명 참여가 있으며 Chris3 년, 2 월 전에 전에 마지막으로 업데이트했습니다.
3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 글쓴이
  • #30549

    Chris
    참가자

    테스트 앱으로 구글 mobile ad intersitial Ad 삽입 연습 중에 에러가 발생했는대 코드 어디가 잘못되었는지

    찾지를 못해 문의 드립니다. 에러는 'Ad has not been loaded or has already been disposed.

    'package:google_mobile_ads/src/ad_instance_manager.dart':

    Failed assertion: line 668 pos 7: 'adIdFor(ad) != null'

    ' 입니다.

    버튼 클릭하면 interstitial Ad가 뜨고 닫으면 다음 페이지로 이동한 뒤에 다시 원래 페이지로 돌아와서 버튼을 한번 더 누르면

    에러가 발생하네요. interstitial Ad 메모리에 상주하지 못하도록 dispose를 추가 한뒤에 발생합니다.

    어느 부분을 잘못 코딩했는지 알 수가 없어 문의 드립니다.

    class QuizPage extends StatefulWidget {

      QuizPage({Key? key}) : super(key: key) {

      }

      @override

      State<QuizPage> createState() => _QuizPageState();

    }

    class _QuizPageState extends State<QuizPage> {

      late InterstitialAd _interstitialAd;

      bool _isAdLoaded = false;

      @override

      void initState() {

        InterstitialAd.load(

          adUnitId: 'ca-app-pub-3940256099942544/1033173712',

          request: AdRequest(),

          adLoadCallback: InterstitialAdLoadCallback(

            onAdLoaded: onAdLoaded,

            onAdFailedToLoad: (error) {},

          ),

        );

        super.initState();

      }

      void onAdLoaded(InterstitialAd ad) {

        _interstitialAd = ad;

        _isAdLoaded = true;

        _interstitialAd.fullScreenContentCallback =

            FullScreenContentCallback(onAdDismissedFullScreenContent: (ad) {

          _interstitialAd.dispose();

        }, onAdFailedToShowFullScreenContent: (ad, error) {

          _interstitialAd.dispose();

        });

      }

      @override

      Widget build(BuildContext context) {

        return Scaffold(

          appBar: AppBar(

            title: Text('Ad Test'),

          ),

          body: Center(

            child: ElevatedButton(

              onPressed: () {

                if (_isAdLoaded) {

                  print(_isAdLoaded.toString());

                  _interstitialAd.show();

                }

                Navigator.of(context)

                    .push(MaterialPageRoute(builder: (context) => QuizResult()));

              },

              child: Text('Complete Quiz'),

            ),

          ),

        );

      }

    }

    #30569

    codingapple
    키 마스터

    버튼을 누를 때마다 광고를 로드하라고 코드를 짜거나 dispose를 하지 말거나 그래보는게 어떨까요

    #30609

    Chris
    참가자

    버튼 누를때 마다 광고 로드로 바꿨습니다. 감사합니다.

3 글 보임 - 1 에서 3 까지 (총 3 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠