🙂 İNSANLARIN EN HAYIRLISI INSANLARA FAYDALI OLANDIR 🙂

Ramazan HABER / FLUTTER / Video player kullanımı 2 List vs

1-) FLUTTER - Video player kullanımı 2 List vs

 

kısa video linkleri : https://gist.github.com/jsturgis/3b19447b304616f18657

single : https://pub.dev/packages/video_player

list : https://pub.dev/packages/video_box

yaptıgımız projenin githubı : https://github.com/ramazanhaber/flutter_videoplayerbasit

 

 

android izin : android->app->src->main-> AndrodiManifest.xml

 

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    
package="com.ramzey.videoplayerbasit">

 

 <uses-permission android:name="android.permission.INTERNET" />

<
application
    
android:usesCleartextTraffic="true"

 

 

 

 

ios izin : ios-> runner -> info.plist

 

<key>NSAppTransportSecurity</key>

<dict>

  <key>NSAllowsArbitraryLoads</key>

  <true/>

</dict>

 

 

1. single

 

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:video_player/video_player.dart';


class VideoPlayerScreen extends StatefulWidget {
   
VideoPlayerScreen({super.key});

  
@override
  
State<VideoPlayerScreen> createState() => _VideoPlayerScreenState();
}

class _VideoPlayerScreenState extends State<VideoPlayerScreen> {
  
late VideoPlayerController _controller;
  
late Future<void> _initializeVideoPlayerFuture;

  
@override
  
void initState() {
    
super.initState();

    
// Create and store the VideoPlayerController. The VideoPlayerController
    // offers several different ructors to play videos from assets, files,
    // or the internet.
    
_controller = VideoPlayerController.network(
      
'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4',
    );

    
// Initialize the controller and store the Future for later use.
    
_initializeVideoPlayerFuture = _controller.initialize();

    
// Use the controller to loop the video.
    
_controller.setLooping(false);

    
_controller.addListener(checkVideo);

  }

  
void checkVideo(){
    
// Implement your calls inside these conditions' bodies :
    
if(_controller.value.position == Duration(seconds: 0, minutes: 0, hours: 0)) {
      print(
'video Started');
    }

    
if(_controller.value.position == _controller.value.duration) {
      print(
'video Ended');
      setState(() {
        
      });
    }

  }

  
@override
  
void dispose() {
    
// Ensure disposing of the VideoPlayerController to free up resources.
    
_controller.dispose();

    
super.dispose();
  }

  
@override
  
Widget build(BuildContext context) {
    
return Scaffold(
      appBar:
AppBar(
        title:  
Text('Butterfly Video'),
      ),
      
// Use a FutureBuilder to display a loading spinner while waiting for the
      // VideoPlayerController to finish initializing.
      
body: 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.
print("baş1");
            
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(),
            );
          }
        },
      ),
      floatingActionButton:
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();
            }
          });
        },
        
// Display the correct icon depending on the state of the player.
        
child: Icon(
          
_controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
        ),
      ),
    );
  }
}

 

 

2. list

 

import 'package:flutter/material.dart';
import 'package:video_box/video.controller.dart';
import 'package:video_box/video_box.dart';
import 'package:video_player/video_player.dart';

class ListVideo extends StatefulWidget {
  
@override
  
_ListVideoState createState() => _ListVideoState();
}

class _ListVideoState extends State<ListVideo> {
  
List<VideoController> vcs = [];

  
@override
  
void initState() {
    
super.initState();

    
for (var i = 0; i < 4; i++) {
      
String url = "https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4";
      
if(i==1){

        
url ="https://roketnot.com/out/yeni.mp4";
      }
      
vcs.add(VideoController(source: VideoPlayerController.network(url))
        ..initialize());
    }
  }

  
@override
  
void dispose() {
    
for (var vc in vcs) {
      
vc.dispose();
    }
    
super.dispose();
  }

  
@override
  
Widget build(BuildContext context) {
    
return Scaffold(
      appBar:
AppBar(
        title:
Text('list video'),
      ),
      body:
ListView(
        children: <
Widget>[
          
for (var vc in vcs)
            
Padding(
              padding:
const EdgeInsets.only(top: 12.0),
              child:
AspectRatio(
                aspectRatio:
16 / 9,
                child:
VideoBox(controller: vc),
              ),
            ),
        ],
      ),
    );
  }
}

 

 

 2023 Mart 24 Cuma
 280