bb_channel 8.53.0
bb_channel: ^8.53.0 copied to clipboard
Blue Billywig Channel SDK for Flutter — embed BB video channels with optional native player integration via bb_player.
Blue Billywig Channel SDK for Flutter #
Embed a Blue Billywig video channel in any Flutter app with native video playback, navigation, search, multi-channel support, deep linking, and analytics — all driven by a single declarative widget.
The SDK pairs the BB channel UI (loaded from BB's CDN) with the native player
from flutter-bb-player
for hardware-accelerated playback with ads, Chromecast, and Picture-in-Picture.
Install #
dependencies:
bb_channel:
git: https://github.com/bluebillywig/flutter-bb-channel
bb_player:
git: https://github.com/bluebillywig/flutter-bb-player
Supports Flutter >=3.19 (Dart 3.3+) through the current master.
Android #
Add the BB Maven repo so the player can resolve native artifacts:
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://maven.bluebillywig.com/releases' }
}
}
iOS #
platform :ios, '14.0'
Quick start #
import 'package:bb_channel/bb_channel.dart';
BBChannelWithPlayer(
channelUrl: 'https://demo.bbvms.com/ch/123.json',
onReady: () => print('Channel loaded'),
onMediaPlay: (m) => print('Playing: ${m.title}'),
)
That's it — the widget handles channel UI, navigation, search, the native player, and analytics out of the box.
API #
BBChannelWithPlayer #
Primary widget. Renders the channel UI and uses the native BB player for playback. On the detail page, the player is mounted inline; tapping a preview thumbnail anywhere else opens the native modal player.
| Prop | Type | Description |
|---|---|---|
channelUrl |
String (required) |
https://<pub>.bbvms.com/ch/<id>.json |
options |
BBChannelOptions |
autoPlay, JWT, search-bar visibility, etc. |
controller |
BBChannelController? |
Imperative control (play, navigate, search, …) |
initialNavigationState |
BBNavigationState? |
Restore navigation on mount (deep linking) |
safeAreaEdges |
Set<BBSafeAreaEdge> |
Which edges receive safe-area padding (default: top) |
handleBackButton |
bool |
Intercept the Android back button to navigate within the channel |
playerMode |
BBPlayerMode |
inline (default) or fullscreen |
playerAspectRatio |
double |
Default 16:9; auto-overridden when a clip reports its own ratio |
jwt |
String? |
JWT for authenticated content (used for both channel and player) |
onReady / onError |
callbacks | Lifecycle |
onMediaPlay / onMediaPause / onMediaEnd |
(BBMediaInfo) => void |
Media lifecycle |
onTimeUpdate |
(BBTimeUpdateEvent) => void |
Frequent — for progress bars |
onPlayerEvent |
(BBPlayerEvent) => void |
Sealed-class hierarchy — switch over event subtypes |
onAnalyticsEvent |
(BBAnalyticsEvent) => void |
Forward BB analytics into your own pipeline |
onNativePlayerStateChange |
(BBNativePlayerStatus) => void |
Idle / loading / playing / paused / ended |
BBChannelController #
Pass a controller to drive the channel from outside:
final ctrl = BBChannelController();
BBChannelWithPlayer(channelUrl: '…', controller: ctrl);
// Later, anywhere…
ctrl.playVideo('12345');
ctrl.search('news');
final state = await ctrl.getNavigationState();
Available methods include play, pause, seek, setVolume, setMuted,
enterFullscreen, exitFullscreen, setJwt, playVideo,
navigateToEntity, navigateTo, goBack, search, setNavigationState,
getNavigationState, getPlayerState, getPlayers, setActivePlayer.
Types #
The SDK exposes typed data classes for every event payload:
BBMediaInfo, BBNavigationState, BBNavigationEvent, BBPlayerState,
BBPlayerEvent (sealed hierarchy), BBTimeUpdateEvent, BBClipLoadedEvent,
BBAdEvent, BBAnalyticsEvent, BBSearchEvent, BBErrorEvent.
See lib/src/bb_types.dart for the canonical
definitions.
Examples #
example/— full QA app with channel browser, viewer, per-channel settings, and a live event inspector.
Support #
- Docs: https://support.bluebillywig.com
- Email: support@bluebillywig.com
License #
Proprietary — Blue Billywig.