beizi_sdk 0.1.4 copy "beizi_sdk: ^0.1.4" to clipboard
beizi_sdk: ^0.1.4 copied to clipboard

Beizi SDK helps Flutter devs quickly integrate ad serving, enabling media owners to monetize. Simple configs for customized ads; see docs for details.

example/lib/main.dart

import 'package:beizi_sdk/beizi_sdk_export.dart';
import 'package:beizi_sdk_example/data/common.dart';
import 'package:beizi_sdk_example/reward_video_page.dart';
import 'package:beizi_sdk_example/widgets/demo_ui.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'data/init_data.dart';
import 'interstitial_page.dart';
import 'native_page.dart';
import 'native_unified_page.dart';
import 'splash_page.dart';
import 'union_download_app_info_page.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      initialRoute: 'HomePage',
      routes: {
        'HomePage': (context) => const HomePage(title: 'BeiZi SDK Demo'),
        'SplashShowPage': (context) => const SplashPage(title: '开屏广告'),
        'InterstitialShowPage': (context) =>
            const InterstitialPage(title: '插屏广告'),
        'RewardVideoPage': (context) =>
            const RewardedVideoPage(title: '激励视频'),
        'NativePage': (context) => const NativePage(title: '原生广告'),
        'NativeUnifiedPage': (context) =>
            const NativeUnifiedPage(title: '自渲染广告'),
        'UnionDownloadAppInfoPage': (context) =>
            const UnionDownloadAppInfoPage()
      },
    );
  }
}

class HomePage extends StatefulWidget {
  const HomePage({super.key, required this.title});

  final String title;

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  InitStatus initStatus = InitStatus.normal;

  @override
  void initState() {
    SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual, overlays: []);
    super.initState();
  }

  String _initLabel() {
    switch (initStatus) {
      case InitStatus.normal:
        return '点击初始化 SDK';
      case InitStatus.initialing:
        return '初始化中...';
      case InitStatus.alreadyInit:
        return '已初始化';
      case InitStatus.success:
        return '初始化成功';
      case InitStatus.failed:
        return '初始化失败';
    }
  }

  Color _initColor() {
    switch (initStatus) {
      case InitStatus.normal:
        return DemoColors.primary;
      case InitStatus.initialing:
        return const Color(0xFF95A5A6);
      case InitStatus.alreadyInit:
      case InitStatus.success:
        return DemoColors.accentB;
      case InitStatus.failed:
        return const Color(0xFFE74C3C);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: DemoColors.background,
      appBar: demoAppBar(widget.title),
      body: Column(
        children: [
          DemoPageHeader(
            title: 'BeiZi 广告 SDK 示例',
            subtitle: 'AppId: $appId · 请先初始化 SDK 再进入各广告页',
            primaryText: _initLabel(),
            primaryColor: _initColor(),
            onPrimaryTap: () {
              setState(() => initStatus = InitStatus.initialing);
              BeiZis.init(appId, BeiziCustomController()).then((_) {
                if (mounted) setState(() => initStatus = InitStatus.success);
              }).catchError((_) {
                if (mounted) setState(() => initStatus = InitStatus.failed);
              });
            },
          ),
          Expanded(
            child: ListView(
              padding: const EdgeInsets.fromLTRB(16, 16, 16, 24),
              children: [
                DemoActionTile(
                  icon: Icons.launch,
                  title: '开屏广告',
                  subtitle: '双实例 A/B · SplashAd',
                  onTap: () => Navigator.pushNamed(context, 'SplashShowPage'),
                ),
                DemoActionTile(
                  icon: Icons.view_carousel_outlined,
                  title: '插屏广告',
                  subtitle: '双实例 A/B · InterstitialAd',
                  onTap: () =>
                      Navigator.pushNamed(context, 'InterstitialShowPage'),
                ),
                DemoActionTile(
                  icon: Icons.play_circle_outline,
                  title: '激励视频',
                  subtitle: '双实例 A/B · RewardedVideoAd',
                  accent: const Color(0xFF9B59B6),
                  onTap: () => Navigator.pushNamed(context, 'RewardVideoPage'),
                ),
                DemoActionTile(
                  icon: Icons.article_outlined,
                  title: '原生广告',
                  subtitle: '双实例 A/B · NativeAd 信息流',
                  accent: const Color(0xFF16A085),
                  onTap: () => Navigator.pushNamed(context, 'NativePage'),
                ),
                DemoActionTile(
                  icon: Icons.dashboard_customize_outlined,
                  title: '自渲染广告',
                  subtitle: '双实例 A/B · UnifiedNativeAd',
                  accent: const Color(0xFFE67E22),
                  onTap: () =>
                      Navigator.pushNamed(context, 'NativeUnifiedPage'),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}
1
likes
140
points
73
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Beizi SDK helps Flutter devs quickly integrate ad serving, enabling media owners to monetize. Simple configs for customized ads; see docs for details.

License

Apache-2.0 (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on beizi_sdk

Packages that implement beizi_sdk