Flutter AdMob横幅广告遮挡屏幕

8
我正在开发一个Flutter应用程序,需要展示一个AdMob的Banner Ad。我注意到这个横幅广告会覆盖我的列表视图。我试图寻找解决方案,但没有找到太有用的东西。
我找到的一个解决方案是在底部提供50px的固定边距。我对这个解决方案感到有些不舒服,因为我在某个地方读到屏幕尺寸可能会影响这个解决方案。
当我放置一个假的底部栏时,它也会覆盖我的底部选项卡栏和底部表格。
请查看下面的图片以了解更多详情。
谢谢您的时间。

enter image description here

3个回答

8

我为你找到了一个解决方案,使你的Flutter应用程序中的横幅底部留出一点填充。使用以下代码来修复它。

var paddingBottom = 48.0;

new MaterialApp(
            debugShowCheckedModeBanner: false,
            title: 'Name',
            home: new MyHomePage(
              title: "NMame",
            ),
            builder: (context, widget) {
              final mediaQuery = MediaQuery.of(context);
              return new Padding(
                child: widget,
                padding: new EdgeInsets.only(bottom: paddingBottom),
              );
            },
            routes: <String, WidgetBuilder>{
                '/HomeScreen': (BuildContext context) =>
                    new MyHomePage(title: 'UPSC Question Papers')
              })

处理应用程序无法加载广告的情况

      if(event == MobileAdEvent.failedToLoad){
      setState(() {
        paddingBottom = 0.0;
      });
    }

谢谢你


嗨,我看到它运行良好,但是当应用程序无法加载时,您将如何处理?它会显示一个黑色空间。 - Sam
更新答案检查事件 == Mobile.failedToload - Sonu Kumar
我会尽快更新帖子。感谢您的时间。 - Sam
嗨@SonuKumar,你设置了var paddingBottom = 48.0;,但实际上我们不知道各种移动屏幕设备需要多少填充。有什么想法吗? - questionasker

6

感谢@nemoryoliver。这种方法的问题在于我需要进入每个类并将逻辑放入Scaffold中。 - Sam

1

在横幅广告的 show() 函数中设置以下参数:

bannerAd = Utils().myBanner
    ..load()
    ..show(
        anchorType: AnchorType.bottom,
        anchorOffset: 55.0);

还需要在容器上设置margin: const EdgeInsets.only(bottom: 55)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接