Flutter广告横幅展示插件banners的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter广告横幅展示插件banners的使用

在Flutter应用程序中,有时我们希望能够在屏幕顶部动态地显示一些横幅信息。banners插件提供了这种功能。

如何使用

创建横幅

首先,创建一些横幅Widget。可以使用BannerScaffold来自动设置颜色并尊重状态栏的填充。

/// 表示用户正在使用演示帐户。
class DemoBanner extends StatelessWidget {
  Key get key => ValueKey('demo');

  @override
  Widget build(BuildContext context) {
    return BannerScaffold(
      backgroundColor: Colors.yellow,
      body: Padding(
        padding: EdgeInsets.all(8),
        child: Text('这是一个演示帐户。'),
      ),
    );
  }
}

使用横幅

将一个widget用Bannered包裹起来,并提供横幅widgets。MediaQuerypadding将会被正确调整。

return Bannered(
  banners: [
    // 一些横幅widgets。
  ],
  child: Scaffold(...),
);

完整示例Demo

下面是一个完整的示例,展示了如何在Flutter应用中使用banners插件:

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext _) => MaterialApp(home: ThePage());
}

class ThePage extends StatefulWidget {
  @override
  State<ThePage> createState() => _ThePageState();
}

class _ThePageState extends State<ThePage> {
  final _banners = <Widget>[];

  @override
  Widget build(BuildContext context) {
    return Bannered(
      banners: _banners,
      child: Scaffold(
        appBar: AppBar(title: Text('首页')),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () => setState(() => _banners.add(DemoBanner())),
                child: Text('以演示身份登录'),
              ),
              ElevatedButton(
                onPressed: () => setState(() => _banners.removeWhere((element) => element.key == ValueKey('demo'))),
                child: Text('退出演示登录'),
              ),
              ElevatedButton(
                onPressed: () => setState(() => _banners.add(OfflineBanner())),
                child: Text('离线'),
              ),
              ElevatedButton(
                onPressed: () => setState(() => _banners.removeWhere((element) => element.key == ValueKey('offline'))),
                child: Text('在线'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

// 演示横幅
class DemoBanner extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BannerScaffold(
      backgroundColor: Colors.yellow,
      body: Padding(
        padding: EdgeInsets.all(8.0),
        child: Text('这是演示模式'),
      ),
    );
  }
}

// 离线横幅
class OfflineBanner extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BannerScaffold(
      backgroundColor: Colors.redAccent,
      body: Padding(
        padding: EdgeInsets.all(8.0),
        child: Text('当前处于离线状态'),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含四个按钮,用于添加或移除不同的横幅。通过点击这些按钮,可以在屏幕顶部显示或隐藏相应的横幅。


更多关于Flutter广告横幅展示插件banners的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter广告横幅展示插件banners的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter应用中使用广告横幅展示插件(例如firebase_admob插件)的示例代码。这个示例将展示如何集成Firebase AdMob并在Flutter应用中显示一个横幅广告。

首先,确保你已经在pubspec.yaml文件中添加了firebase_admob依赖:

dependencies:
  flutter:
    sdk: flutter
  firebase_admob: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来安装依赖。

接下来,你需要按照Firebase AdMob的官方文档设置你的Firebase项目并获取你的AdMob应用ID和广告单元ID。

以下是一个完整的示例代码,展示如何在Flutter应用中集成和显示AdMob横幅广告:

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化Firebase AdMob
  MobileAds.instance.initialize();

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // AdMob广告单元ID
  static const MobileAdTargetingInfo targetingInfo = MobileAdTargetingInfo(
    keywords: <String>['foo', 'bar'],
    contentUrl: 'http://www.example.com',
    childDirected: false,
    testDevices: <String>[], // 添加测试设备ID以便在开发过程中测试广告
  );

  BannerAd myBanner = BannerAd(
    adUnitId: 'ca-app-pub-xxxxxxxxxxxxxxxx/xxxxxxxxxx', // 替换为你的广告单元ID
    size: AdSize.banner,
    targetingInfo: targetingInfo,
    listener: (MobileAdEvent event) {
      print("BannerAd event is $event");
    },
  );

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter AdMob Banner Example'),
        ),
        body: Column(
          children: <Widget>[
            Expanded(
              child: Container(
                alignment: Alignment.center,
                child: AdWidget(ad: myBanner),
              ),
            ),
            // 其他内容
            Center(
              child: Text(
                'Scroll down to see the banner ad',
                style: TextStyle(fontSize: 20),
              ),
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 释放广告资源
    myBanner.dispose();
    super.dispose();
  }
}

注意事项:

  1. 测试设备ID:在开发过程中,你可以添加测试设备ID到testDevices列表中,以便在没有真实广告请求的情况下测试广告。你可以在Firebase AdMob控制台中找到你的测试设备ID。

  2. 广告单元ID:确保你使用正确的广告单元ID。你可以在Firebase AdMob控制台中创建广告单元并获取ID。

  3. 广告尺寸AdSize.banner是横幅广告的标准尺寸。你也可以使用其他尺寸,如AdSize.largeBannerAdSize.mediumRectangle等。

  4. 初始化:在main函数中调用MobileAds.instance.initialize()来初始化Firebase AdMob。这是必要的步骤,以确保广告能够正确加载。

  5. 广告监听:通过listener参数,你可以监听广告事件,如加载完成、点击等。

这个示例代码提供了一个基本的框架,你可以根据需要进行扩展和修改,以适应你的应用需求。

回到顶部