byteark_player_flutter 1.2.0
byteark_player_flutter: ^1.2.0 copied to clipboard
ByteArkPlayerFlutter is a Flutter plugin for the ByteArk Player, designed to enable seamless video playback and advanced player management within your Flutter applications.
example/lib/main.dart
import 'package:byteark_player_flutter/data/byteark_player_license_key.dart';
import 'package:byteark_player_flutter/domain/byteark_player_listener.dart';
import 'package:byteark_player_flutter/domain/method_channel/byteark_player_controller.dart';
import 'package:byteark_player_flutter_example/demo/player_lighthouse_screen.dart';
import 'package:flutter/material.dart';
import 'package:byteark_player_flutter/data/byteark_player_config.dart';
import 'package:byteark_player_flutter/data/byteark_player_item.dart';
import 'package:byteark_player_flutter/presentation/byteark_player.dart';
void main() {
runApp(const PlayerLighthouseScreen());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
late ByteArkPlayerItem _item;
late ByteArkPlayerConfig _config;
late ByteArkPlayerController _controller;
@override
void initState() {
super.initState();
// Step 1: Create a listener and bind it to a fresh controller.
final listener = ByteArkPlayerListener(
onPlayerReady: () {
debugPrint("Player is ready.");
},
onAdsStart: (data) {
debugPrint("Ad started. Data: ${data.toMap()}");
},
);
_controller = ByteArkPlayerController(listener: listener);
// Step 2: Define the video source using ByteArkPlayerItem.
_item = ByteArkPlayerItem(
url:
"https://byteark-playertzxedwv.stream-playlist.byteark.com/streams/TZyZheqEJUwC/playlist.m3u8",
);
// Step 3: Configure the player using ByteArkPlayerConfig.
_config = ByteArkPlayerConfig(
adsSettings: ByteArkAdsSettings(
adTagUrl:
"https://pubads.g.doubleclick.net/gampad/ads?iu=/21775744923/external/single_ad_samples&sz=640x480&cust_params=sample_ct%3Dlinear&ciu_szs=300x250%2C728x90&gdfp_req=1&output=vast&unviewed_position_start=1&env=vp&impl=s&correlator=",
),
licenseKey: ByteArkPlayerLicenseKey(
android: "ANDROID_KEY",
iOS: "IOS_KEY",
),
playerItem: _item,
);
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'ByteArk Player Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: Scaffold(
appBar: AppBar(
title: const Text('ByteArk Player Demo'),
centerTitle: true,
),
body: Column(
children: [
// Step 4: Embed the player; wire the controller so playback can
// be driven externally.
AspectRatio(
aspectRatio: 16 / 9,
child: ByteArkPlayer(
playerConfig: _config,
controller: _controller,
),
),
const SizedBox(height: 16),
ElevatedButton(
onPressed: _controller.pause,
child: const Text("Pause"),
),
],
),
),
);
}
}