-
글쓴이글
-
2022년 3월 28일 15:53 #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'),
),
),
);
}
}
-
글쓴이글
- 답변은 로그인 후 가능합니다.