如何'await'广告加载回调?
How to 'await' ads load call back?
我想先加载广告,然后 showAd()
。尽管我在加载时使用 await,但在 InterstitialAdLoadCallback()
中它仍然没有 'await',因为它是一个回调。
InterstitialAd? _interstitialAd;
print("OUTPUT 1");
await InterstitialAd.load(
adUnitId: '123456789',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) {
print("OUTPUT 2");
_interstitialAd = ad;
},
onAdFailedToLoad: (err) {
_interstitialAd = null;
},
),
);
print("OUTPUT 3");
输出:
OUTPUT 1
OUTPUT 3
OUTPUT 2
如何在InterstitialAdLoadCallback()
中'await'?
如果你想await
一个不直接公开Future
的操作,你可以使用Completer
创建和管理一个:
var adCompleter = Completer<void>();
InterstitialAd? _interstitialAd;
await InterstitialAd.load(
adUnitId: '123456789',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) {
_interstitialAd = ad;
adCompleter.complete();
},
onAdFailedToLoad: (err) {
_interstitialAd = null;
adCompleter.completeError(err);
},
),
);
await adCompleter.future;
我想先加载广告,然后 showAd()
。尽管我在加载时使用 await,但在 InterstitialAdLoadCallback()
中它仍然没有 'await',因为它是一个回调。
InterstitialAd? _interstitialAd;
print("OUTPUT 1");
await InterstitialAd.load(
adUnitId: '123456789',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) {
print("OUTPUT 2");
_interstitialAd = ad;
},
onAdFailedToLoad: (err) {
_interstitialAd = null;
},
),
);
print("OUTPUT 3");
输出:
OUTPUT 1
OUTPUT 3
OUTPUT 2
如何在InterstitialAdLoadCallback()
中'await'?
如果你想await
一个不直接公开Future
的操作,你可以使用Completer
创建和管理一个:
var adCompleter = Completer<void>();
InterstitialAd? _interstitialAd;
await InterstitialAd.load(
adUnitId: '123456789',
request: AdRequest(),
adLoadCallback: InterstitialAdLoadCallback(
onAdLoaded: (ad) {
_interstitialAd = ad;
adCompleter.complete();
},
onAdFailedToLoad: (err) {
_interstitialAd = null;
adCompleter.completeError(err);
},
),
);
await adCompleter.future;