Buscar pacotes, repositórios e categorias de apps

Capa de native_video_player
Detalhes do pacotev4.0.1

native_video_player

Um widget Flutter para reproduzir vídeos no iOS e Android usando uma implementação nativa.

AndroidiOSmacOS
Downloads em 30 dias
8,7 mil
Curtidas
89
Pontos Pub
140

Instalar pacote

flutter pub add native_video_player

Visão geral do pacote

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

Um pacote Flutter que permite reprodução de vídeo no iOS, Android e macOS usando implementações nativas da plataforma. Ele fornece uma maneira confiável e eficiente de integrar conteúdo de vídeo em aplicativos Flutter, aproveitando os players de vídeo nativos de cada sistema operacional. Isso garante melhor compatibilidade com vários formatos de vídeo e aceleração por hardware. O pacote é projetado para desenvolvedores que buscam reprodução de vídeo sem depender de abstrações multiplataforma.

Casos de uso

  • Reproduzir arquivos de vídeo locais
  • Transmissão de vídeos por URLs
  • Integrando vídeo em aplicativos ricos em mídia
  • Suporte à reprodução de vídeo em tela cheia
  • Construindo interfaces de player de vídeo com desempenho nativo

Principais recursos

  • Usa players de vídeo nativos no iOS e no Android
  • Suporta streaming de vídeo e arquivos locais
  • Reprodução acelerada por hardware
  • Compatibilidade multiplataforma (iOS, Android, macOS)
  • Integração simples com widgets do Flutter

Indicado para

  • Desenvolvedores que precisam de reprodução de vídeo de alto desempenho
  • Aplicativos que exigem recursos de vídeo nativos
  • Aplicações de mídia ou educação
  • Projetos direcionados a múltiplas plataformas com comportamento de vídeo consistente

Considerações

  • Limitado a iOS, Android e macOS
  • Sem suporte web
  • Requer configuração de plataforma nativa para recursos avançados
  • Depende do suporte a formato de vídeo específico da plataforma

README original

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

native_video_player

Pub

A Flutter widget to play videos on iOS, macOS and Android using a native implementation.

Perfect for building video-centric apps like TikTok, Instagram Reels, or YouTube Shorts, as well as general video playback needs.

Android iOS macOS
Support 16+ 9.0+ 10.11+
Implementation

Usage

Loading a video
@override
Widget build(BuildContext context) {
  return NativeVideoPlayerView(
    onViewReady: (controller) async {
      await controller.loadVideo(
        VideoSource(
          path: 'path/to/file',
          type: VideoSourceType.asset,
        ),
      );
    },
  );
}
Listen to events
StreamSubscription<void>? _eventsSubscription;

_eventsSubscription = controller.events.listen((event) {
  switch (event) {
    case PlaybackStatusChangedEvent():
      // Emitted when playback status changes (playing, paused, or stopped)
      final playbackStatus = controller.playbackStatus;
    case PlaybackPositionChangedEvent():
      // Emitted when playback position changes
      final position = controller.playbackPosition;
    case PlaybackReadyEvent():
      // Emitted when video is loaded and ready to play
      final height = controller.videoInfo?.height;
      final width = controller.videoInfo?.width;
      final duration = controller.videoInfo?.duration;
    case PlaybackEndedEvent():
      // Emitted when video playback ends
    case PlaybackSpeedChangedEvent():
      // Emitted when playback speed changes
    case VolumeChangedEvent():
      // Emitted when volume changes
    case PlaybackErrorEvent():
      // Emitted when an error occurs
      print('Playback error: ${event.errorMessage}');
  }
});

// Don't forget to dispose the subscription
@override
void dispose() {
  _eventsSubscription?.cancel();
  super.dispose();
}
Autoplay
bool isAutoplayEnabled = false;

Future<void> _loadVideoSource() async {
  await controller.loadVideo(videoSource);
  if (isAutoplayEnabled) {
    await controller.play();
  }
}
Playback loop
bool isPlaybackLoopEnabled = false;

void _onPlaybackEnded() {
  if (isPlaybackLoopEnabled) {
    controller.stop();
    controller.play();
  }
}

// Set up event listener
_eventsSubscription = controller.events.listen((event) {
  switch (event) {
    case PlaybackEndedEvent():
      _onPlaybackEnded();
    // ... handle other events ...
  }
});
Controller disposal
class VideoPlayerState extends State<VideoPlayer> {
  NativeVideoPlayerController? _controller;
  StreamSubscription<void>? _eventsSubscription;

  Future<void> _initController(NativeVideoPlayerController controller) async {
    _controller = controller;
    _eventsSubscription = _controller?.events.listen((event) {
      // ... handle events ...
    });
  }

  @override
  void dispose() {
    // Cancel any event subscriptions
    _eventsSubscription?.cancel();
    // Dispose of the controller
    _controller?.dispose();
    _controller = null;
    super.dispose();
  }
}

It's important to properly dispose of both the controller and any event subscriptions when you're done with them to prevent memory leaks. This typically happens in the dispose() method of your widget's State.

Advanced usage

See the example app for a complete usage example.

Support this project

Sponsors:

Thank you to all sponsors for supporting this project! ❤️

Other projects

All my projects

Credits

Created by @albemala (Twitter)

Categorias

Dependências

Lista de dependências 2 itens

Repositório-fonte

Projetos que usam este pacote