bb_player 8.53.0 copy "bb_player: ^8.53.0" to clipboard
bb_player: ^8.53.0 copied to clipboard

Flutter plugin for Blue Billywig's native video player SDK. Provides hardware-accelerated playback with VAST/VPAID ads, analytics, Chromecast, Picture-in-Picture, fullscreen, outstream, and Shorts (ve [...]

example/lib/main.dart

import 'dart:async';

import 'package:app_links/app_links.dart';
import 'package:flutter/material.dart';

import 'screens/api_screen.dart';
import 'screens/deep_link_player_screen.dart';
import 'screens/modal_player_screen.dart';
import 'screens/outstream_screen.dart';
import 'screens/shorts_screen.dart';
import 'screens/simple_player_screen.dart';

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

class _DemoItem {
  final String title;
  final String subtitle;
  final IconData icon;
  final WidgetBuilder builder;

  const _DemoItem({
    required this.title,
    required this.subtitle,
    required this.icon,
    required this.builder,
  });
}

const List<_DemoItem> _demoItems = [
  _DemoItem(
    title: 'Simple Player',
    subtitle: 'Minimal embed — no event handlers',
    icon: Icons.play_circle,
    builder: _buildSimple,
  ),
  _DemoItem(
    title: 'API Reference',
    subtitle: 'Every controller method + events',
    icon: Icons.api,
    builder: _buildApi,
  ),
  _DemoItem(
    title: 'Shorts',
    subtitle: 'Vertical video + Full/Shelf display',
    icon: Icons.view_carousel,
    builder: _buildShorts,
  ),
  _DemoItem(
    title: 'Outstream Ads',
    subtitle: 'Article with collapse/expand ad',
    icon: Icons.ad_units,
    builder: _buildOutstream,
  ),
  _DemoItem(
    title: 'Modal Player',
    subtitle: 'BBModalPlayer.present() / dismiss()',
    icon: Icons.fullscreen,
    builder: _buildModal,
  ),
];

Widget _buildSimple(BuildContext c) => const SimplePlayerScreen();
Widget _buildApi(BuildContext c) => const ApiScreen();
Widget _buildShorts(BuildContext c) => const ShortsScreen();
Widget _buildOutstream(BuildContext c) => const OutstreamScreen();
Widget _buildModal(BuildContext c) => const ModalPlayerScreen();

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

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final GlobalKey<NavigatorState> _navigatorKey = GlobalKey<NavigatorState>();
  late final AppLinks _appLinks;
  StreamSubscription<Uri>? _linkSub;

  @override
  void initState() {
    super.initState();
    _appLinks = AppLinks();
    // Cold launch.
    _appLinks.getInitialLink().then(_handleLink);
    // Warm hits.
    _linkSub = _appLinks.uriLinkStream.listen(_handleLink);
  }

  @override
  void dispose() {
    _linkSub?.cancel();
    super.dispose();
  }

  void _handleLink(Uri? uri) {
    if (uri == null) return;
    final clipId = parseDeepLink(uri);
    if (clipId == null) return;
    _navigatorKey.currentState?.push(
      MaterialPageRoute(
        builder: (_) => DeepLinkPlayerScreen(clipId: clipId),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'BB Player Example',
      navigatorKey: _navigatorKey,
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: const HomeScreen(),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('BB Player Demo'),
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: ListView(
        children: [
          for (final item in _demoItems)
            ListTile(
              leading: Icon(item.icon),
              title: Text(item.title),
              subtitle: Text(item.subtitle),
              onTap: () => Navigator.push(
                context,
                MaterialPageRoute(builder: item.builder),
              ),
            ),
        ],
      ),
    );
  }
}
0
likes
150
points
48
downloads

Documentation

Documentation
API reference

Publisher

verified publisherbluebillywig.com

Weekly Downloads

Flutter plugin for Blue Billywig's native video player SDK. Provides hardware-accelerated playback with VAST/VPAID ads, analytics, Chromecast, Picture-in-Picture, fullscreen, outstream, and Shorts (vertical video).

Homepage
Repository (GitHub)
View/report issues

Topics

#video #player #chromecast #shorts #bluebillywig

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on bb_player

Packages that implement bb_player