Flutter广告集成插件mobad的使用
Flutter广告集成插件mobad的使用
在本教程中,我们将详细介绍如何在Flutter项目中集成并使用广告插件mobad
。通过此插件,您可以轻松实现激励视频广告、Banner广告和插屏广告。
示例代码说明
1. 主应用文件 main.dart
// 导入必要的库
import 'package:flutter/material.dart';
import 'banner.dart'; // 引入Banner广告页面
import 'interstitial.dart'; // 引入插屏广告页面
import 'reward_video.dart'; // 引入激励视频广告页面
// 定义主应用类
void main() {
runApp(MyApp()); // 启动应用
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: ThemeData( // 设置主题
primarySwatch: Colors.grey, // 主色调为灰色
visualDensity: VisualDensity.adaptivePlatformDensity, // 自适应平台密度
buttonTheme: ButtonThemeData(minWidth: 200), // 按钮最小宽度
),
home: MyHomePage(), // 主页
routes: <String, WidgetBuilder>{ // 路由配置
'/reward-video': (BuildContext context) => RewardVideoPage(), // 激励视频广告页面
'/banner': (BuildContext context) => BannerPage(), // Banner广告页面
'/interstitial': (BuildContext context) => InterstitialPage(), // 插屏广告页面
},
);
}
}
// 定义主页类
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center( // 居中布局
child: Column( // 垂直方向的子组件列
mainAxisAlignment: MainAxisAlignment.center, // 子组件垂直居中
children: <Widget>[ // 定义按钮列表
RaisedButton( // 激励视频广告按钮
onPressed: () {
Navigator.of(context).pushNamed('/reward-video'); // 跳转到激励视频广告页面
},
child: Text("激励视频广告"), // 按钮文字
),
RaisedButton( // Banner广告按钮
onPressed: () {
Navigator.of(context).pushNamed('/banner'); // 跳转到Banner广告页面
},
child: Text("Banner 广告"), // 按钮文字
),
RaisedButton( // 插屏广告按钮
onPressed: () {
Navigator.of(context).pushNamed('/interstitial'); // 跳转到插屏广告页面
},
child: Text("插屏广告"), // 按钮文字
),
],
),
),
);
}
}
2. Banner广告页面 banner.dart
// Banner广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件
class BannerPage extends StatefulWidget {
@override
_BannerPageState createState() => _BannerPageState();
}
class _BannerPageState extends State<BannerPage> {
BannerAd? _bannerAd;
@override
void initState() {
super.initState();
_loadBannerAd(); // 初始化时加载Banner广告
}
void _loadBannerAd() async {
_bannerAd = await MobAd.loadBannerAd( // 加载Banner广告
adUnitId: "your_banner_ad_unit_id", // 替换为您的广告单元ID
size: AdSize.BANNER, // 广告尺寸
);
if (_bannerAd != null) {
_bannerAd!.show(); // 显示广告
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Banner广告")), // 设置标题
body: Center(
child: Text("请查看屏幕底部以查看Banner广告"), // 提示用户查看广告位置
),
);
}
@override
void dispose() {
_bannerAd?.dispose(); // 销毁时释放资源
super.dispose();
}
}
3. 插屏广告页面 interstitial.dart
// 插屏广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件
class InterstitialPage extends StatefulWidget {
@override
_InterstitialPageState createState() => _InterstitialPageState();
}
class _InterstitialPageState extends State<InterstitialPage> {
InterstitialAd? _interstitialAd;
@override
void initState() {
super.initState();
_loadInterstitialAd(); // 初始化时加载插屏广告
}
void _loadInterstitialAd() async {
_interstitialAd = await MobAd.loadInterstitialAd( // 加载插屏广告
adUnitId: "your_interstitial_ad_unit_id", // 替换为您的广告单元ID
);
if (_interstitialAd != null) {
_interstitialAd!.show(); // 显示广告
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("插屏广告")), // 设置标题
body: Center(
child: Text("点击按钮后会展示插屏广告"), // 提示用户点击后会展示广告
),
);
}
@override
void dispose() {
_interstitialAd?.dispose(); // 销毁时释放资源
super.dispose();
}
}
4. 激励视频广告页面 reward_video.dart
// 激励视频广告页面代码
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart'; // 导入mobad插件
class RewardVideoPage extends StatefulWidget {
@override
_RewardVideoPageState createState() => _RewardVideoPageState();
}
class _RewardVideoPageState extends State<RewardVideoPage> {
RewardVideoAd? _rewardVideoAd;
@override
void initState() {
super.initState();
_loadRewardVideoAd(); // 初始化时加载激励视频广告
}
void _loadRewardVideoAd() async {
_rewardVideoAd = await MobAd.loadRewardVideoAd( // 加载激励视频广告
adUnitId: "your_reward_video_ad_unit_id", // 替换为您的广告单元ID
);
if (_rewardVideoAd != null) {
_rewardVideoAd!.setRewardListener((rewardAmount, rewardType) { // 设置奖励监听器
print("用户获得奖励:金额 $rewardAmount 类型 $rewardType");
});
_rewardVideoAd!.show(); // 显示广告
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("激励视频广告")), // 设置标题
body: Center(
child: Text("点击按钮后会展示激励视频广告"), // 提示用户点击后会展示广告
),
);
}
@override
void dispose() {
_rewardVideoAd?.dispose(); // 销毁时释放资源
super.dispose();
}
}
注意事项
- 在使用
mobad
插件之前,请确保已经在pubspec.yaml
文件中添加了插件依赖:dependencies: mobad: ^1.0.0
更多关于Flutter广告集成插件mobad的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter广告集成插件mobad的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter项目中集成广告是常见的需求,MobAd 是一个常用的广告插件,支持多种广告类型,如横幅广告、插屏广告、激励视频广告等。以下是集成 MobAd 插件的基本步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 MobAd 插件的依赖:
dependencies:
flutter:
sdk: flutter
mobad: ^latest_version # 请替换为最新版本
然后运行 flutter pub get
以安装依赖。
2. 初始化 MobAd
在你的 main.dart
文件中初始化 MobAd。通常,你可以在 main()
函数中进行初始化:
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 初始化 MobAd
await MobAd.init(
appId: 'your_app_id', // 替换为你的 App ID
appKey: 'your_app_key', // 替换为你的 App Key
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
3. 添加横幅广告
横幅广告通常是显示在屏幕底部或顶部的矩形广告。你可以在页面中添加横幅广告:
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MobAd Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Hello, MobAd!'),
],
),
),
bottomNavigationBar: Container(
height: 50,
child: MobAdBanner(
adUnitId: 'your_banner_ad_unit_id', // 替换为你的横幅广告单元 ID
adSize: AdSize.banner,
listener: (AdEvent event) {
// 处理广告事件
if (event == AdEvent.loaded) {
print('Banner Ad Loaded');
}
},
),
),
);
}
}
4. 添加插屏广告
插屏广告是在用户操作(如点击按钮)后弹出的全屏广告。你可以按需加载和显示插屏广告:
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart';
class MyHomePage extends StatelessWidget {
MobAdInterstitial _interstitialAd;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MobAd Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Hello, MobAd!'),
ElevatedButton(
onPressed: _showInterstitialAd,
child: Text('Show Interstitial Ad'),
),
],
),
),
);
}
void _showInterstitialAd() {
_interstitialAd = MobAdInterstitial(
adUnitId: 'your_interstitial_ad_unit_id', // 替换为你的插屏广告单元 ID
listener: (AdEvent event) {
// 处理广告事件
if (event == AdEvent.loaded) {
_interstitialAd.show();
} else if (event == AdEvent.closed) {
_interstitialAd.dispose();
}
},
);
_interstitialAd.load();
}
}
5. 添加激励视频广告
激励视频广告通常用于奖励用户,如游戏中的额外生命或积分。你可以按需加载和显示激励视频广告:
import 'package:flutter/material.dart';
import 'package:mobad/mobad.dart';
class MyHomePage extends StatelessWidget {
MobAdRewardedVideo _rewardedVideoAd;
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('MobAd Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Hello, MobAd!'),
ElevatedButton(
onPressed: _showRewardedVideoAd,
child: Text('Show Rewarded Video Ad'),
),
],
),
),
);
}
void _showRewardedVideoAd() {
_rewardedVideoAd = MobAdRewardedVideo(
adUnitId: 'your_rewarded_video_ad_unit_id', // 替换为你的激励视频广告单元 ID
listener: (AdEvent event, {RewardItem reward}) {
// 处理广告事件
if (event == AdEvent.loaded) {
_rewardedVideoAd.show();
} else if (event == AdEvent.rewarded) {
print('Reward: ${reward.amount} ${reward.type}');
}
},
);
_rewardedVideoAd.load();
}
}