star_live 1.1.2-alpha1.3
star_live: ^1.1.2-alpha1.3 copied to clipboard
star live flutter plugin
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:star_live/page/home/live_home_page.dart';
import 'package:star_live/sdk/live_env.dart';
import 'package:star_live/sdk/live_sdk_callback.dart';
import 'package:star_live/sdk/live_sdk_manager.dart';
import 'package:star_live/utils/debug_log.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'StarLive',
debugShowCheckedModeBanner: false,
navigatorObservers: [TestRouteObserver()],
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
class TestRouteObserver extends NavigatorObserver {
@override
void didPush(Route route, Route? previousRoute) {
super.didPush(route, previousRoute);
debugLog("[didPush] >> current:${route.settings.name}, previous:${previousRoute?.settings.name}", tag: "NavigatorObserver");
}
@override
void didPop(Route route, Route? previousRoute) {
super.didPop(route, previousRoute);
debugLog("[didPop] >> current:${route.settings.name}, previous:${previousRoute?.settings.name}", tag: "NavigatorObserver");
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
bool _hadLogin = false;
@override
void initState() {
super.initState();
LiveSdkManager.instance.initSdk(
appId: "8", //appId需申请
env: LiveEnv.beta, //beta:测试环境;release:线上环境
debug: true, //true:打印log;false:关闭log
callback: LiveSdkCallback(onCheckLiveRoomPermission: (context) {
//是否允许看播,返回true则允许。返回false则业务方自行处理页面逻辑
sdkLog("[onCheckLiveRoomPermission]");
return true;
}, onCustomAdClick: (context, id, type, location, key, value) {
//自定义广告点击时间
//id:广告id
//type:广告类型。0:业务方在直播后台设置的自定义广告;1:业务方在plugin设置的广告
//location:广告位置。0:首页banner;1:直播间banner
//key:广告自定义key
//value:广告自定义value
sdkLog("[onCustomAdClick] >> id:$id, type:$type, key:$key, value:$value");
}, onNeedLogin: (context) {
//未登录。需要业务方更新uid和token后调用LiveSdkManager.instance.loginSDK
sdkLog("[onNeedLogin]");
}, onRecharge: (context) async {
//跳转业务方充值页面
//需要返回 Navigator Future,如
//return Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => const RechargePage()));
sdkLog("[onRecharge]");
}, onUserOffline: (context) {
//用户在其他设备登录被挤下线,需要业务方重新调用LiveSdkManager.instance.loginSDK
sdkLog("[onUserOffline]");
}));
}
void _login() {
if (!_hadLogin) {
LiveSdkManager.instance.loginSDK(
uid: "bGlS1re1L9KJyJ3KHDrYTm8cDA7Bn6KGh06bh0m8CJc=", //业务方的直播uid
token: "ba67ef58b250eaee60bac748712a0789", //业务方的直播token
callback: (success, msg) {
_hadLogin = true;
if (success) {
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => const LiveHomePage()));
}
},
);
} else {
Navigator.push(context, MaterialPageRoute(builder: (BuildContext context) => const LiveHomePage()));
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("StarLive plugin sdk demo"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: const <Widget>[
Text(
'star live plugin sdk test',
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _login,
tooltip: '直播首页',
child: const Icon(Icons.home),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}