beizi_sdk 0.1.4
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'),
),
],
),
),
],
),
);
}
}