我成功在页脚上显示了智能横幅,然后对其进行了处置。我的问题是该应用程序的所有页面上均显示。
我的问题是:如何仅在一页上显示?
@override
void initState() {
super.initState();
myBanner
..load().then((loaded) {
if (loaded && this.mounted) {
myBanner..show();
}
});
}
答案 0 :(得分:1)
如果您有多个充当单个屏幕的小部件,则只需包含该部分
@override void initState() {
super.initState();
myBanner ..load().then((loaded) {
if (loaded && this.mounted) {
myBanner..show();
}
});
}
您可能需要处理它:
@override
void dispose() {
myBanner?.dispose();
super.dispose();
}
答案 1 :(得分:0)
将广告添加到我的应用程序时,我遇到了同样的问题。就我而言,我正在调用我的方法以在didChangeDependencies
函数中显示横幅广告。该方法可以被该应用多次调用,我发现(在我的应用中)当您将一条新路线推到Navigator
时会调用该方法,这就是为什么在我移至另一条横幅时调用显示横幅的原因我的应用程序的屏幕。也许您有类似的实现方式。
答案 2 :(得分:0)
我从Github链接here找到了可行的解决方案。这个想法很简单。
showBannerAd
内致电initState()
。showBannerAd
。从推送的页面返回后,这将再次显示广告。Navigator.push(context, MaterialPageRoute(builder: (context) => EditPage())).then((value) {
Ads.showBannerAd();
});
hideBannderAd
内致电initState()
。这样就完成了。 我的广告助手类
import 'package:firebase_admob/firebase_admob.dart';
const String testDevice = 'YOUR_DEVICE_ID';
class Ads {
static BannerAd _bannerAd;
static void initialize() {
FirebaseAdMob.instance.initialize(appId: FirebaseAdMob.testAppId);
}
static const MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
testDevices: testDevice != null ? <String>[testDevice] : null,
keywords: <String>['foo', 'bar'],
contentUrl: 'http://foo.com/bar.html',
childDirected: true,
nonPersonalizedAds: true,
);
static BannerAd _createBannerAd() {
return BannerAd(
adUnitId: BannerAd.testAdUnitId,
size: AdSize.banner,
targetingInfo: targetingInfo,
listener: (MobileAdEvent event) {
print("BannerAd event $event");
},
);
}
static void showBannerAd() {
if (_bannerAd == null) _bannerAd = _createBannerAd();
_bannerAd
..load()
..show(anchorOffset: 0.0, anchorType: AnchorType.bottom);
}
static void hideBannerAd() async {
await _bannerAd.dispose();
_bannerAd = null;
}
}
答案 3 :(得分:0)
您可以使用await等待第二页的弹出
bannerAd.dispose();
await Navigator.pushNamed(context, f['route']);
intialzeAdd();
intialiazeAdd在第二次监听弹出后被调用
答案 4 :(得分:0)
打电话
Navigator.pop();
在调用 Navigator.push()
之前。这将解决您的问题