使用Flutter的异步方式调用AdMob横幅广告,并使用FutureBuilder展示广告
示例代码如下:
import 'package:flutter/material.dart';
import 'package:flutter_admob_plugin/flutter_admob_plugin.dart';
class AdmobBanner extends StatelessWidget {
const AdmobBanner({Key key}) : super(key: key);
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: FlutterAdmobPlugin.showBannerAd(
bannerId: 'YOUR_BANNER_ID'),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) {
return Container(
width: snapshot.data.width.toDouble(),
height: snapshot.data.height.toDouble(),
child: AdmobBannerView(
adUnitId: 'YOUR_BANNER_ID',
adSize: AdmobBannerSize(
width: snapshot.data.width,
height: snapshot.data.height),
onBannerViewCreated: (controller) {
controller.load();
},
),
);
} else if (snapshot.connectionState == ConnectionState.waiting) {
return Container(
width: 0,
height: 0,
);
} else {
return Container(
width: 0,
height: 0,
);
}
},
);
}
}
在这个示例代码中,我们使用Flutter的异步方式来调用AdMob横幅广告,这样可以避免在Flutter应用中渲染缓慢的问题。同时我们也使用了FutureBuilder来展示广告,这样可以提高效率。最终我们将广告封装在了一个名为AdmobBanner的无状态小部件中。