Flutter 颤振\u本地\u admob预加载广告
是否可以预加载本机颤振admob ads,例如在initState中 我正在尝试在一个Flutter 颤振\u本地\u admob预加载广告,flutter,admob,Flutter,Admob,是否可以预加载本机颤振admob ads,例如在initState中 我正在尝试在一个ListView.builder()中使用广告,其中填充了与用户相关的内容以及介于两者之间的广告。但是广告加载得太晚了,因此用户可以在滚动列表视图时看到屏幕上出现的微调器 示例代码(来自): @覆盖 小部件构建(构建上下文){ 返回材料PP( 家:脚手架( appBar:appBar( 标题:const Text(“插件示例应用程序”), ), 正文:ListView( 儿童:[ 容器( 边距:仅限边缘组(底部
ListView.builder()
中使用广告,其中填充了与用户相关的内容以及介于两者之间的广告。但是广告加载得太晚了,因此用户可以在滚动列表视图时看到屏幕上出现的微调器
示例代码(来自):
@覆盖
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text(“插件示例应用程序”),
),
正文:ListView(
儿童:[
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
NativeAdmobBannerView(//Flatter_native_admob插件的创建者确实更新了插件。
您现在可以等待加载广告,然后再进行渲染。有关详细信息,请查看发布页面:
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“包:flatter_native_admob/flatter_native_admob.dart”;
导入“包:flatter_native_admob/native_admob_controller.dart”;
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
静态常数_adUnitID=“”;
最终_nativeAdController=NativeAdmobController();
双倍高度=0;
流动认购(流动认购);;
@凌驾
void initState(){
_订阅=\u nativeAdController.stateChanged.listen(\u onStateChanged);
super.initState();
}
@凌驾
无效处置(){
_订阅。取消();
_nativeAdController.dispose();
super.dispose();
}
无效状态已更改(AdLoadState状态){
开关(状态){
案例AdLoadState.loading:
设置状态(){
_高度=0;
});
打破
案例AdLoadState.loadCompleted:
设置状态(){
_高度=330;
});
打破
违约:
打破
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text(“插件示例应用程序”),
),
正文:ListView(
儿童:[
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
高度:_高度,
填充:边缘设置。全部(10),
边距:仅限边缘组(底部:20.0),
儿童:NativeAdmob(
//您的广告单元id
adUnitID:_adUnitID,
控制器:_nativeAdController,
//处于加载状态时不显示加载小部件
正在加载:容器(),
),
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
],
),
),
);
}
}
Flatter\u native\u admob插件的创建者确实更新了该插件。
您现在可以等待加载广告,然后再进行渲染。有关详细信息,请查看发布页面:
导入'dart:async';
进口“包装:颤振/材料.省道”;
导入“包:flatter_native_admob/flatter_native_admob.dart”;
导入“包:flatter_native_admob/native_admob_controller.dart”;
类MyApp扩展了StatefulWidget{
@凌驾
_MyAppState createState()=>\u MyAppState();
}
类MyAppState扩展了状态{
静态常数_adUnitID=“”;
最终_nativeAdController=NativeAdmobController();
双倍高度=0;
流动认购(流动认购);;
@凌驾
void initState(){
_订阅=\u nativeAdController.stateChanged.listen(\u onStateChanged);
super.initState();
}
@凌驾
无效处置(){
_订阅。取消();
_nativeAdController.dispose();
super.dispose();
}
无效状态已更改(AdLoadState状态){
开关(状态){
案例AdLoadState.loading:
设置状态(){
_高度=0;
});
打破
案例AdLoadState.loadCompleted:
设置状态(){
_高度=330;
});
打破
违约:
打破
}
}
@凌驾
小部件构建(构建上下文){
返回材料PP(
家:脚手架(
appBar:appBar(
标题:const Text(“插件示例应用程序”),
),
正文:ListView(
儿童:[
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
边距:仅限边缘组(底部:20.0),
高度:200.0,
颜色:颜色。绿色,
),
容器(
高度:_高度,
填充:边缘设置。全部(10),
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: ListView(
children: <Widget>[
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
NativeAdmobBannerView( // <---- preload this ad
adUnitID: "<Your ad unit ID>",
style: BannerStyle.dark, // enum dark or light
showMedia: true, // whether to show media view or not
contentPadding: EdgeInsets.all(10), // content padding
onCreate: (controller) {
controller.setStyle(BannerStyle.light); // Dynamic update style
},
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
],
),
),
);
}
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_native_admob/flutter_native_admob.dart';
import 'package:flutter_native_admob/native_admob_controller.dart';
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
static const _adUnitID = "<Your ad unit ID>";
final _nativeAdController = NativeAdmobController();
double _height = 0;
StreamSubscription _subscription;
@override
void initState() {
_subscription = _nativeAdController.stateChanged.listen(_onStateChanged);
super.initState();
}
@override
void dispose() {
_subscription.cancel();
_nativeAdController.dispose();
super.dispose();
}
void _onStateChanged(AdLoadState state) {
switch (state) {
case AdLoadState.loading:
setState(() {
_height = 0;
});
break;
case AdLoadState.loadCompleted:
setState(() {
_height = 330;
});
break;
default:
break;
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: ListView(
children: <Widget>[
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
height: _height,
padding: EdgeInsets.all(10),
margin: EdgeInsets.only(bottom: 20.0),
child: NativeAdmob(
// Your ad unit id
adUnitID: _adUnitID,
controller: _nativeAdController,
// Don't show loading widget when in loading state
loading: Container(),
),
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
Container(
margin: EdgeInsets.only(bottom: 20.0),
height: 200.0,
color: Colors.green,
),
],
),
),
);
}
}
Opacity(opacity: 0, child: NativeAdmob(
// Your ad unit id
adUnitID: _adUnitID,
controller: _nativeAdController,
loading: Container(),
),
),
_nativeAdController.reloadAd(forceRefresh: true, numberAds: 1);