Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import 'dart:async';
- import 'package:flutter/material.dart';
- import 'package:video_player/video_player.dart';
- import './drawer.dart';
- class VideoPlayerScreen extends StatefulWidget {
- VideoPlayerScreen({Key key}) : super(key: key);
- @override
- _VideoPlayerScreenState createState() => _VideoPlayerScreenState();
- }
- class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
- double _value = 0.0;
- void _setvalue(double value) => setState(() => _value = value);
- VideoPlayerController _controller;
- Future<void> _initializeVideoPlayerFuture;
- @override
- void initState() {
- // Create and store the VideoPlayerController. The VideoPlayerController
- // offers several different constructors to play videos from assets, files,
- // or the internet.
- _controller = VideoPlayerController.network(
- 'https://mnmedias.api.telequebec.tv/m3u8/29880.m3u8',
- );
- // Initialize the controller and store the Future for later use.
- _initializeVideoPlayerFuture = _controller.initialize();
- // Use the controller to loop the video.
- _controller.setLooping(true);
- super.initState();
- }
- @override
- void dispose() {
- // Ensure disposing of the VideoPlayerController to free up resources.
- _controller.dispose();
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return Scaffold(
- drawer: DrawerList(),
- // Use a FutureBuilder to display a loading spinner while waiting for the
- // VideoPlayerController to finish initializing.
- body: Container(
- alignment: Alignment.center,
- child: FutureBuilder(
- future: _initializeVideoPlayerFuture,
- builder: (context, snapshot) {
- if (snapshot.connectionState == ConnectionState.done) {
- // If the VideoPlayerController has finished initialization, use
- // the data it provides to limit the aspect ratio of the video.
- return AspectRatio(
- aspectRatio: _controller.value.aspectRatio,
- // Use the VideoPlayer widget to display the video.
- child: VideoPlayer(_controller),
- );
- } else {
- // If the VideoPlayerController is still initializing, show a
- // loading spinner.
- return Center(child: CircularProgressIndicator());
- }
- },
- ),
- ),
- bottomNavigationBar: BottomAppBar(
- child: FloatingActionButton(
- onPressed: () {
- // Wrap the play or pause in a call to `setState`. This ensures the
- // correct icon is shown.
- setState(() {
- // If the video is playing, pause it.
- if (_controller.value.isPlaying) {
- _controller.pause();
- } else {
- // If the video is paused, play it.
- _controller.play();
- }
- });
- },
- child: Icon(
- _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
- ),
- ),
- ),
- // This trailing comma makes auto-formatting nicer for build methods.
- );
- }
- }
- //Volume range selector
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement