Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev2.1.0

cast

Pacote Dart para descobrir e conectar dispositivos Chromecast

Downloads em 30 dias
16,5 mil
Curtidas
94
Pontos Pub
80

Instalar pacote

flutter pub add cast

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

O pacote cast é uma biblioteca Dart projetada para permitir a descoberta e conexão com dispositivos Chromecast em aplicativos Flutter. Ele permite que desenvolvedores transmitam áudio, vídeo e outros conteúdos de seus aplicativos para telas compatíveis com Chromecast. O pacote oferece detecção automática de dispositivos e controle de mídia sem interrupções, tornando-o ideal para criar aplicativos centrados em mídia que integram TVs inteligentes e hardware de streaming. Desenvolvido com simplicidade em mente, fornece uma API direta para funcionalidades de transmissão sem exigir conhecimento profundo dos protocolos subjacentes. É mantido pela eivo.co e está disponível no GitHub para contribuições da comunidade.

Casos de uso

  • Transmissão de mídia para dispositivos Chromecast
  • Construindo aplicativos de TV ou entretenimento doméstico
  • Habilitar controle remoto de reprodução
  • Integração com ecossistemas de casa inteligente
  • Criando experiências de mídia entre dispositivos

Principais recursos

  • Descoberta automática de dispositivos Chromecast
  • Suporte para transmissão de áudio e vídeo
  • API simples e intuitiva
  • Compatibilidade entre plataformas (com implementação específica da plataforma)
  • de código aberto e mantido pela comunidade

Indicado para

  • Desenvolvedores de aplicativos de mídia
  • Aplicativos direcionados a TVs inteligentes ou dispositivos de streaming
  • Projetos que exigem transmissão entre dispositivos
  • Equipes trabalhando em integrações de IoT ou automação residencial
  • Aplicativos Flutter com foco em experiências multi-tela

Considerações

  • Requer configuração de plataforma Android e iOS para funcionalidade completa
  • Limitado a dispositivos compatíveis com Chromecast
  • Pode exigir configuração adicional para fluxos de mídia complexos
  • Depende da conectividade de rede externa
  • Não adequado para casos de uso não relacionados a mídia

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

Pub Likes Pub Popularity Pub Points

cast

Dart package to discover and connect with Chromecast devices

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  cast: ^2.1.0
iOS

Required iOS 13 minimum. Since iOS 14 a few more steps are required https://developers.google.com/cast/docs/ios_sender/ios_permissions_changes

In ios/Runner/Info.plist add:

<key>NSBonjourServices</key>
<array>
  <string>_googlecast._tcp</string>
  <string>_YOUR_APP_ID._googlecast._tcp</string>
</array>

<key>NSLocalNetworkUsageDescription</key>
<string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
network.</string>

Usage

List devices:

Widget build(BuildContext context) {
  return FutureBuilder<List<CastDevice>>(
    future: CastDiscoveryService().search(),
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        return Center(
          child: Text(
            'Error: ${snapshot.error.toString()}',
          ),
        );
      } else if (!snapshot.hasData) {
        return Center(
          child: CircularProgressIndicator(),
        );
      }

      if (snapshot.data!.isEmpty) {
        return Column(
          children: [
            Center(
              child: Text(
                'No Chromecast founded',
              ),
            ),
          ],
        );
      }

      return Column(
        children: snapshot.data!.map((device) {
          return ListTile(
            title: Text(device.name),
            onTap: () {
              _connectToYourApp(context, device);
            },
          );
        }).toList(),
      );
    },
  );
}

Connect to device:

Future<void> _connect(BuildContext context, CastDevice object) async {
  final session = await CastSessionManager().startSession(object);

  session.stateStream.listen((state) {
    if (state == CastSessionState.connected) {
      _sendMessage(session);
    }
  });

  session.messageStream.listen((message) {
    print('receive message: $message');
  });

  session.sendMessage(CastSession.kNamespaceReceiver, {
    'type': 'LAUNCH',
    'appId': 'YouTube', // set the appId of your app here
  });
}

CastSessionManager is used to keep track of all sessions.

Send message:

void _sendMessage(CastSession session) {
  session.sendMessage('urn:x-cast:namespace-of-the-app', {
    'type': 'sample',
  });
}

Except for the launch message, you should wait until the session have a connected state before sending message.

Note

Some informations about the protocol used https://docs.rs/crate/gcast/0.1.5/source/PROTOCOL.md

$ pub global activate protoc_plugin
$ export PATH="$PATH":"$HOME/.pub-cache/bin"
$ protoc -I=./lib/cast_channel --dart_out=./lib/cast_channel ./lib/cast_channel/cast_channel.proto --plugin "pub run protoc_plugin"

Author

Categorias

Dependências

Lista de dependências 2 itens

Repositório-fonte

Projetos que usam este pacote