如何使用flutter_google_ad_manager插件呈现onAdFailedToLoad事件时呈现不同的小部件?

时间:2019-08-23 13:37:56

标签: flutter

我使用flutter_google_ad_manager插件。在onAdFailedToLoad的情况下,我想呈现其他窗口小部件,而不是DFPBanner窗口小部件。我怎样才能做到这一点?当我在onAdFailedToLoad:(errorCode){...}中调用一个小部件时,它没有被渲染。为什么?

Container(
  margin: EdgeInsets.only(top: 16, bottom: 16),
  child: DFPBanner(
    isDevelop: false,
    //testDevices: MyTestDevices(),
    adUnitId: '/XXXXXXXX/MyAdunit',
    adSize: DFPAdSize.MEDIUM_RECTANGLE,
    onAdFailedToLoad: (errorCode) {
      // how to render different widget in case of no fill    
      return Text("render some other widget here");
    },
  ),
),

1 个答案:

答案 0 :(得分:0)

您需要构建一个基于值渲染小部件的函数,假设您有一个boolean标志来检查要渲染的小部件,该函数如下:

_renderWidget() {
 if(flag) {
  return DFPBanner(
    isDevelop: false,
    //testDevices: MyTestDevices(),
    adUnitId: '/XXXXXXXX/MyAdunit',
    adSize: DFPAdSize.MEDIUM_RECTANGLE,
    onAdFailedToLoad: (errorCode) {
      setState((){
       flag = false;
      })
    },
  ),
 } else {
   return Text("render some other widget here");
 }

}

然后在您的Container内使用该函数将其构建为子级:

Container(
  margin: EdgeInsets.only(top: 16, bottom: 16),
  child: _renderWidget()
),

当然,这需要在StatefulWidget内部完成,并且您需要在bool flag = true;中声明State变量。希望这会有所帮助。