谷歌移动广告实施减慢了 Flutter App
Posted
技术标签:
【中文标题】谷歌移动广告实施减慢了 Flutter App【英文标题】:Google mobile Ads implementation slowed down flutter App 【发布时间】:2021-06-15 10:00:12 【问题描述】:我一直在我的 Flutter 应用上实施横幅广告,我成功地展示了横幅,但我的应用运行速度非常慢,以至于崩溃并关闭。 我一直在寻找解决这个问题的方法,但似乎找不到任何解决方案,尽管很多人都遇到了同样的问题。 如果你们能帮助我,我将不胜感激。
我的代码如下:
adhelper.dart
import 'dart:io';
import 'package:google_mobile_ads/google_mobile_ads.dart';
class AdHelper
Future<InitializationStatus> initialization;
AdHelper(this.initialization);
static String get bannerAdUnitId => Platform.isandroid
? 'ca-app-pub-3940256099942544/6300978111' \\Test ads
: 'ca-app-pub-3940256099942544/2934735716'; \\Test ads
mainpage.dart
class _MainPageState extends State<MainPage>...
final Completer<BannerAd> bannerCompleter = Completer<BannerAd>();
...
BannerAd banner;
...
@override
void didChangeDependencies()
super.didChangeDependencies();
final adHelper = Provider.of<AdHelper>(context);
adHelper.initialization.then((status)
setState(()
banner ??= BannerAd(
adUnitId: AdHelper.bannerAdUnitId,
size: AdSize.banner,
request: AdRequest(),
listener: AdListener(
onAdLoaded: (Ad ad)
print('Ad loaded: $BannerAd.');
bannerCompleter.complete(ad as BannerAd);
,
onAdFailedToLoad: (Ad ad, LoadAdError error)
print('Ad failed to load: $BannerAd, $error');
bannerCompleter.completeError(null);
,
onAdOpened: (Ad ad) => print('Ad opened: $BannerAd.'),
onAdClosed: (Ad ad) => print('Ad closed: $BannerAd.'),
onApplicationExit: (Ad ad) => print('App Exit: $BannerAd.'),
),
);
Future<void>.delayed(Duration(seconds: 1), () => banner?.load());
);
);
@override
void dispose()
super.dispose();
banner?.dispose();
banner = null;
@override
Widget build(BuildContext context)
return FutureBuilder<BannerAd>(
future: bannerCompleter.future,
builder: (BuildContext context, AsyncSnapshot<BannerAd> snapshot)
Widget child;
switch (snapshot.connectionState)
case ConnectionState.none:
case ConnectionState.waiting:
case ConnectionState.active:
child = Container();
break;
case ConnectionState.done:
if (snapshot.hasData)
child = AdWidget(ad: banner);
else
child = Text('Error loading $BannerAd');
...
if (banner == null)
SizedBox(height: 50,)
else
Container(
width: banner.size.width.toDouble(),
height: banner.size.height.toDouble(),
child: child,
还有我的 main.dart
Future<void> main() async
WidgetsFlutterBinding.ensureInitialized();
final initFuture = MobileAds.instance.initialize();
final adHelper = AdHelper(initFuture);
....
runApp(
Provider.value(
value: adHelper,
builder: (context, child) => MyApp(),
),
【问题讨论】:
我也遇到了同样的问题,请问您有解决办法吗? 广告拖慢了应用程序?瞧!除了资源消耗之外,广告会减慢一切。 【参考方案1】:此问题仅出现在使用 Android 10 或更低版本的设备上,我的设备(使用 android 10)上遇到了同样的问题。 我推荐使用这个插件,它解决了我和其他很多人的问题。
native_admob_flutter
【讨论】:
以上是关于谷歌移动广告实施减慢了 Flutter App的主要内容,如果未能解决你的问题,请参考以下文章
低价谷歌的移动UI框架Flutter实战企业级APP实战开发高级案例课程Flutter开发深入浅出
谷歌的 Mobile UI 框架 Flutter Beta 3 发布