video_list_player 0.0.8
video_list_player: ^0.0.8 copied to clipboard
A Flutter package for seamless video playback using video_player. Supports auto transitions and manual play, pause, next, and previous controls for playlists.
import 'package:flutter/material.dart';
import 'package:video_list_player/video_list_player.dart';
import 'package:video_list_player/video_list_player_controller.dart';
import 'package:video_player/video_player.dart';
void main() {
runApp(MaterialApp(
home: MyScreen(),
));
}
/// The main screen that contains the [VideoListPlayer] widget and playback controls.
///
/// This screen allows users to interact with the video player, including playing, pausing,
/// skipping to the next or previous video using the provided control buttons.
class MyScreen extends StatefulWidget {
const MyScreen({super.key});
@override
State<MyScreen> createState() => _MyScreenState();
}
class _MyScreenState extends State<MyScreen> {
/// The controller responsible for managing video playback.
VideoListPlayerController? _controller;
@override
void initState() {
super.initState();
_init();
}
/// Initializes the video player controllers and the [VideoListPlayerController].
Future<void> _init() async {
final controllers = [
VideoPlayerController.networkUrl(Uri.parse("https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4")),
VideoPlayerController.networkUrl(Uri.parse("https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4")),
];
// Initialize all video controllers
for (var c in controllers) {
await c.initialize();
}
// Create the [VideoListPlayerController] with the list of video controllers
final controller = VideoListPlayerController(controllers: controllers, autoMode: true);
setState(() {
_controller = controller;
});
_controller!.onUpdate = () {
if (mounted) setState(() {});
};
}
@override
Widget build(BuildContext context) {
if (_controller == null) {
return const Center(child: CircularProgressIndicator());
}
return Scaffold(
body: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
// Display the video player
VideoListPlayer(aspectRatio: 16 / 9, controller: _controller!),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: _controller!.previous,
icon: const Icon(Icons.skip_previous)),
IconButton(
onPressed: () {
_controller!.currentController.value.isPlaying
? _controller!.pause()
: _controller!.play();
},
icon: Icon(_controller!.currentController.value.isPlaying
? Icons.pause
: Icons.play_arrow)),
IconButton(
onPressed: _controller!.next,
icon: const Icon(Icons.skip_next)),
],
)
],
),
);
}
}