video_player_widget 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. import 'package:media_kit/media_kit.dart';
  2. import 'package:media_kit_video/media_kit_video.dart';
  3. import '../models/post.dart';
  4. class VideoPlayerWidget extends StatefulWidget {
  5. final String videoUrl;
  6. const VideoPlayerWidget({super.key, required this.videoUrl});
  7. @override
  8. State<VideoPlayerWidget> createState() => _VideoPlayerWidgetState();
  9. }
  10. class _VideoPlayerWidgetState extends State<VideoPlayerWidget> {
  11. late final Player player;
  12. late final VideoController controller;
  13. bool _isInitialized = false;
  14. @override
  15. void initState() {
  16. super.initState();
  17. player = Player();
  18. controller = VideoController(player);
  19. player.open(Media(widget.videoUrl));
  20. player.stream.error.listen((error) => print("Player error: $error"));
  21. player.stream.buffering.listen((buffering) {
  22. if (!buffering && !_isInitialized) {
  23. setState(() => _isInitialized = true);
  24. }
  25. });
  26. }
  27. @override
  28. Widget build(BuildContext context) {
  29. return Stack(
  30. children: [
  31. Video(controller: controller),
  32. if (!_isInitialized)
  33. const Center(child: CircularProgressIndicator()),
  34. ],
  35. );
  36. }
  37. @override
  38. void dispose() {
  39. player.dispose();
  40. super.dispose();
  41. }
  42. }