Search packages, repositories and app categories

Package detailsv1.0.3

flutter_video_cast

flutter_video_cast let you discover cast devices like Chrome Cast and Apple TV and connect to them.

30-day downloads
35
Likes
50
Pub points
40

Install package

flutter pub add flutter_video_cast

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

flutter_video_cast is a Flutter package that enables discovery and connection to cast devices such as Chrome Cast and Apple TV. It allows users to stream video content from their Flutter applications to compatible display devices, enhancing media sharing across smart TVs and streaming hardware. The package integrates seamlessly with existing Flutter projects and supports device detection and session management. It is ideal for developers building media-centric apps aiming to extend playback to larger screens.

Use cases

  • Streaming video to smart TVs
  • Remote playback control
  • Media casting from mobile apps
  • Live video mirroring
  • Multi-device compatibility
  • Cross-platform casting

Key features

  • Device discovery
  • Cast session management
  • Support for Chrome Cast and Apple TV
  • Simple integration with Flutter
  • Real-time device status updates
  • Cross-platform functionality

Suitable for

  • Media and entertainment apps
  • Smart home integrations
  • Video conferencing tools
  • Educational content platforms
  • IoT device controllers
  • Apps requiring screen mirroring

Considerations

  • Requires compatible casting devices
  • Network connectivity essential
  • Limited to supported platforms
  • May need additional permissions
  • Depends on external SDKs
  • No built-in media player

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

flutter_video_cast

A Flutter plugin for iOS and Android for connecting to cast devices like Chromecast and Apple TV.

Installation

First, add flutter_video_cast as a dependency in your pubspec.yaml file.

iOS

Set the minimum os target to iOS 11.0.

Initialize the Cast context in the application delegate ios/Runner/AppDelegate.m:

import UIKit
import Flutter
import GoogleCast

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, GCKLoggerDelegate {
    let kReceiverAppID = kGCKDefaultMediaReceiverApplicationID
    let kDebugLoggingEnabled = true

    override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {
        GeneratedPluginRegistrant.register(with: self)
        let criteria = GCKDiscoveryCriteria(applicationID: kReceiverAppID)
        let options = GCKCastOptions(discoveryCriteria: criteria)
        GCKCastContext.setSharedInstanceWith(options)
        GCKCastContext.sharedInstance().useDefaultExpandedMediaControls = true
        GCKLogger.sharedInstance().delegate = self
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
}

Opt-in to the embedded views preview by adding a boolean property to the app's Info.plist file with the key io.flutter.embedded_views_preview and the value YES.

Android

Add dependencies in your module (app-level) Gradle file (usually android/app/build.gradle):

implementation 'com.google.android.gms:play-services-cast-framework:19.0.0'
implementation 'com.google.android.exoplayer:extension-cast:2.11.5'

Set the theme of the MainActivity to @style/Theme.AppCompat.NoActionBar in the application manifest android/app/src/main/AndroidManifest.xml:

<manifest ...
  <application ...
    <meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"
               android:value="com.google.android.exoplayer2.ext.cast.DefaultCastOptionsProvider"/>
    ...
    <activity android:theme="@style/Theme.AppCompat.NoActionBar" ...

Make MainActivity extends FlutterFragmentActivity and initialize the Cast context:

CastContext.getSharedInstance(applicationContext)
Both

You can now add a ChromeCastButton widget to your widget tree.

The button can be controlled with the ChromeCastController that is passed to the ChromeCastButton's onButtonCreated callback.

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: CastSample(),
    );
  }
}


class CastSample extends StatefulWidget {
  @override
  _CastSampleState createState() => _CastSampleState();
}

class _CastSampleState extends State<CastSample> {
  ChromeCastController _controller;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Cast Sample'),
        actions: [
          ChromeCastButton(
            onButtonCreated: (controller) {
              setState(() => _controller = controller);
              _controller?.addSessionListener();
            },
            onSessionStarted: () {
              _controller?.loadMedia('https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4');
            },
          ),
        ],
      ),
    );
  }
}

See the example directory for a complete sample app.

Categories

Dependencies

Dependency list 1 items

Source repository

Projects using this package

No data available yet.