You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
import 'package:chewie/chewie.dart'; import 'package:flutter/material.dart'; import 'package:sonnat/core/widgets/global_loading.dart'; import 'package:video_player/video_player.dart';
class VideoPlayer extends StatefulWidget { final String url;
const VideoPlayer({super.key, required this.url});
@override State<VideoPlayer> createState() => _VideoPlayerState(); }
class _VideoPlayerState extends State<VideoPlayer> { late ChewieController? chewieController; late VideoPlayerController videoPlayerController;
@override void initState() { super.initState(); videoPlayerController = VideoPlayerController.network(widget.url); }
Future<bool> initVideo() async { await videoPlayerController.initialize(); chewieController = ChewieController( videoPlayerController: videoPlayerController, autoPlay: false, looping: false, autoInitialize: true, allowFullScreen: true, ); return Future.value(true); }
@override Widget build(BuildContext context) { if (videoPlayerController.value.isInitialized) { return AspectRatio( aspectRatio: chewieController!.aspectRatio ?? 16 / 9, child: Chewie(controller: chewieController!), ); } return FutureBuilder( future: initVideo(), builder: (context, snapshot) { if (snapshot.hasData) { return AspectRatio( aspectRatio: chewieController!.aspectRatio ?? 16 / 9, child: Chewie(controller: chewieController!), ); } if (snapshot.hasError) { return const Icon(Icons.error_outline); } return const GlobalLoading(isSmallSize: true); }); }
@override void dispose() { videoPlayerController.dispose(); chewieController?.dispose(); super.dispose(); } }
|