1 增加依赖
# 视频播放 video_player: ^1.0.1
2 播放视频前的筹备
2.1 网络拜访权限
在 ios 目录下的 info.plist 清单文件中配置 iOS设置的http网络拜访权限 :
<key>NSAppTransportSecurity</key><dict> <key>NSAllowsArbitraryLoads</key> <true/></dict>
如下图所示
在 android 目录下的 AndroidManifest.xml 清单文件中配置网络申请权限以及http的拜访权限
<!-- 网络申请权限--> <uses-permission android:name="android.permission.INTERNET" /> <!--内部文件存储权限--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
networkSecurityConfig 配置的是 http拜访权限
<?xml version="1.0" encoding="utf-8"?><network-security-config> <base-config cleartextTrafficPermitted="true" /></network-security-config>
3 视频播放
视频资源的加载以及播放管制全副是通过 VideoPlayerController来操作的
3.1 视频资源的加载
VideoPlayerController _playerController ; @override void initState() { super.initState(); //网络链接 //VideoPlayerController.network(url); //VideoPlayerController.file(File(url)); //本地链接 _videoPlayerController = VideoPlayerController.asset("asset资源门路"); //调用初始化办法 _videoPlayerController.initialize() //异步执行完的回调 ..whenComplete(() { //刷新页面 setState(() {}); }); }
3.2 视频播放组件
AspectRatio( //设置视频的大小 宽高比。长宽比示意为宽高比。例如,16:9宽高比的值为16.0/9.0 aspectRatio: _videoPlayerController.value.aspectRatio, //播放视频的组件 child: VideoPlayer(_videoPlayerController), ),)
3.3 视频播放相干管制
//获取以后视频播放的信息 VideoPlayerValue videoPlayerValue = _videoPlayerController.value; //是否初始化实现 bool initialized = videoPlayerValue.initialized; //是否正在播放 bool isPlaying = videoPlayerValue.isPlaying; //以后播放的视频的宽高比例 double aspectRatio = videoPlayerValue.aspectRatio; //以后视频是否缓存 bool isBuffer = videoPlayerValue.isBuffering; //以后视频是否循环 bool isLoop = videoPlayerValue.isLooping; //以后播放视频的总时长 Duration totalDuration = videoPlayerValue.duration; //以后播放视频的地位 Duration currentDuration = videoPlayerValue.position; if (initialized) { // 视频已初始化 if (isPlaying) { // 正播放 --- 暂停 _videoPlayerController.pause(); } else { //暂停 ----播放 _videoPlayerController.play(); } setState(() {}); } else { //未初始化 _videoPlayerController.initialize().then((_) { // videoPlayerController.play(); // setState(() {}); }); }