如果BannerAd是在flutter中的Listview.builder中创建的,如何处理它们



嗨,我正在制作一个应用程序,我想实现一个横幅广告,如果列表中每5项,在我的有状态类中,我有这样的代码:

@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(itemBuilder: (context, index) {
return BannerAd(
size: AdSize.banner,
adUnitId: BannerAd.testAdUnitId,
listener: adState.adListener,
request: AdRequest())
..load();
}),
);
}

我正在使用google_mobile_ads:^0.13.0包

问题是因为bannerAd实例是在构建方法中创建的,所以我无法处理它们。因为我没有处理它们,问题随机出现在应用程序上;

您可以将索引的模应用到您想要的位置插入广告

要在每5个项目后插入广告,您可以尝试这样的index % 5 == 0。下面是片段。

@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(itemBuilder: (context, index) {
return Column(children: <Widget>[
if (index % 5 == 0 && index != 0) // Will insert ad after every fifth item
Text('Ad Banner inserted after 5th item'), // Your Ad widget
Text('Your normal list item') // Your list item widget.
]);
}),
);
}

为了简单起见,我使用了Text小部件来指导您的逻辑:(

编辑:创建BannerAd小部件后,无法对其进行处置。它将在Widget树中,直到父级被销毁。

最新更新