flutter admob/webview 在应用程序从后台恢复后显示空白页面

问题描述 投票:0回答:1

应用程序从后台恢复后,BannerAd 显示空白的黑色页面。 据我所知,google_mobile_ads正在flutter中使用webview_flutter包。正如所料,从后台恢复时,webview 也会出现同样的问题。 admob/webview 中的所有功能(如单击或滚动)都可以正常工作,只是呈现黑色空白。即使我建立一个只有广告的新项目,问题仍然存在。

下面的代码仅包含一个简单的 BannerAd,该广告在应用程序从后台恢复后显示一个空白页面。 (在 flutter 3.16.3 / Pixel 7 Pro 中)

import 'package:flutter/material.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';

void main(){
    runApp(MaterialApp(home:AD()));
}

class AD extends StatefulWidget{
    @override
    State createState()=>_AD();
}
class _AD extends State<AD>{
    BannerAd?_ADBANNER;
    final ValueNotifier<bool>_READY=ValueNotifier<bool>(false);

    @override
    void initState(){
        super.initState();
        MobileAds.instance.initialize();
        if(null==_ADBANNER)
        _ADBANNER=
        BannerAd(
            adUnitId:'ca-app-pub-3940256099942544/6300978111',
            size:AdSize.banner,
            request:AdRequest(),
            listener:BannerAdListener(
                onAdLoaded:(AD){
                    debugPrint('Ad loaded');
                    if(!_READY.value)
                    _READY.value=true;
                },
                onAdFailedToLoad:(AD,E){
                    debugPrint('Ad failed to load: $E');
                    _READY.value=false;
                    AD.dispose();
                },
            ),
        )
        ..load();
    }

    @override
    void dispose(){
        _READY.value=false;
        _ADBANNER?.dispose();
        debugPrint('Ad disposed');
        super.dispose();
    }

    @override
    Widget build(CTX){
        return
        ValueListenableBuilder<bool>(
            valueListenable:_READY,
            builder:(CTX,V,_){
                debugPrint('LISTEN');

                if(V)
                return
                Container(
                    alignment:Alignment.center,
                    color:Colors.white,
                    child:
                    AdWidget(ad:_ADBANNER!),
                );

                else
                return
                Center(child:CircularProgressIndicator());
            }
        );
    }
}

这段代码中我缺少什么??

PS:这只发生在我的 Pixel 7 Pro 和 mi A1 手机中,模拟器中没有,并且调试控制台中根本没有错误。我尝试同时使用bannerAds和webview,当slivergrid进入视口时,bannerAds显示疯狂的显示错误,复制webview屏幕。

android flutter webview admob
1个回答
0
投票

我也有同样的问题。您使用的是哪个版本的 google_mobile_ads?您是否尝试过在应用程序恢复后重新加载横幅?

© www.soinside.com 2019 - 2024. All rights reserved.