由于您没有提供任何代码,我会根据我认为您可以做到的方式来假设和回答。
如果您在预定义的固定位置展示广告,则需要BannerAd
为每个位置创建一个新位置。您还必须BannerAd
像这样单独加载这些:
final BannerAd myBanner1 = BannerAd(
adUnitId: '<Banner ID>',
size: AdSize.smartBanner,
request: AdRequest(),
listener: AdListener(onAdClosed: (ad) => ad.dispose()),
);
myBanner1.load();
final adWidget1 = AdWidget(ad: myBanner1);
...
...
...
final BannerAd myBannerNth = BannerAd(
adUnitId: '<Banner ID>',
size: AdSize.banner,
request: AdRequest(),
listener: AdListener(onAdClosed: (ad) => ad.dispose()),
);
myBannerNth.load();
final adWidgetNth = AdWidget(ad: myBannerNth);
其中myBannerNth/adWidgetNth是第 n 个横幅/广告小部件。
对于动态的、自动生成的情况,例如在 a 中ListView.separated
,您可以这样做:
// Defined somewhere, e.g. in your State[less/ful] widget
Map<String, BannerAd> ads = <String, BannerAd>{};
...
...
...
ListView.separated(
separatorBuilder: (context, index) => Divider(),
shrinkWrap: true,
itemBuilder: (BuildContext context, int index) {
ads['myBanner$index'] = BannerAd(
adUnitId: '<Banner ID>',
size: AdSize.banner,
request: AdRequest(),
listener: AdListener(onAdClosed: (ad) => ad.dispose()));
ads['myBanner$index'].load();
if (index % 6 == 0) {
return Column(
children: [
Container(
child: AdWidget(ad: ads['myBanner$index']),
height: 100.0,
),
_buildItem(context, items[index])
],
);
}
return _buildItem(context, items[index]);
},
itemCount: items.length,
)
ads
其值是Map
单个动态自动生成的横幅广告在哪里。