Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Importa bibliotecas
- import 'dart:async';
- import 'package:flutter/material.dart';
- import 'package:video_player/video_player.dart';
- void main() => runApp(VideoPlayerApp());
- class VideoPlayerApp extends StatelessWidget {
- @override
- Widget build(BuildContext context) {
- return MaterialApp(
- title: 'Video Player Demo',
- home: VideoPlayerScreen(),
- );
- }
- }
- class VideoPlayerScreen extends StatefulWidget {
- VideoPlayerScreen({Key key}) : super(key: key);
- @override
- _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
- }
- class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
- VideoPlayerController _controller;
- Future<void> _initializeVideoPlayerFuture;
- @override
- void initState() {
- // Cria e armazena o controlador de video. Este controlador oferece diversas
- // funções para exibição de vídeos (url, arquivos e assets).
- _controller = VideoPlayerController.network(
- 'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4',
- );
- // Inicializa o controlador.
- _initializeVideoPlayerFuture = _controller.initialize();
- // Configura o vídeo para exibir em loop.
- _controller.setLooping(true);
- super.initState();
- }
- @override
- void dispose() {
- // Libera recursos do controlador de vídeo.
- _controller.dispose();
- super.dispose();
- }
- // Constroi layout.
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- appBar: AppBar(
- title: Text('Butterfly Video'),
- ),
- // Usa um FutureBuilder para exibir o spinner, indicando que o vídeo
- // está sendo carregado.
- body: FutureBuilder(
- future: _initializeVideoPlayerFuture,
- builder: (context, snapshot) {
- if (snapshot.connectionState == ConnectionState.done) {
- // Se o controlador terminou a inicialização, usa os dados do vídeo
- // para definir o aspect radio (4:3 ou 16:9).
- return AspectRatio(
- aspectRatio: _controller.value.aspectRatio,
- // Chama o player para exibir no layout.
- child: VideoPlayer(_controller),
- );
- } else {
- // Se o contrrolador ainda está carregando, mostra o spinner.
- return Center(child: CircularProgressIndicator());
- }
- },
- ),
- floatingActionButton: FloatingActionButton(
- onPressed: () {
- // Controla o play/pause do vídeo.
- setState(() {
- // Se o vídeo está executado, pausa.
- if (_controller.value.isPlaying) {
- _controller.pause();
- } else {
- // Se o vídeo está pausado, continua a execução.
- _controller.play();
- }
- });
- },
- // Exibie o ícone correto de acordo com a situação atual (play ou pause).
- child: Icon(
- _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
- ),
- ),
- );
- }
- }
Add Comment
Please, Sign In to add comment