一、网络权限配置:
1.Android网络权限(工程/android/app/src/main/AndroidManifest.xml):
<manifest ...>
...
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
二、视频播放:
1.添加video_player插件依赖,在pubspec.yaml中:
dependencies:
video_player: ^2.4.7 #官方视频播放插件
2.实现简单视频播放功能:
late VideoPlayerController videoControl;
...
void initState() {
...
videoControl = VideoPlayerController.network( //创建视频控制器,设置视频URL
'https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4')
..initialize().then((_) { //视频初始化后显示第一帧
setState(() {});
});
}
...
Widget build(BuildContext context) {
return Scaffold(..., body: genVidoWidget()); //显示视频Widget
}
//创建视频Widget
Widget genVidoWidget() {
return videoControl.value.isInitialized ?
//视频已初始化时显示视频Widget,InkWell包装Widget后,可添加点击事件
InkWell(child: AspectRatio(aspectRatio: videoControl.value.aspectRatio, child: VideoPlayer(videoControl)),
onTap: () { //监听视频点击事件,控制播放或暂停
startOrPause();
},
)
//视频未初始化时显示加载中Widget
: CircularProgressIndicator();
}
//播放或暂停
void startOrPause() {
setState(() {
videoControl.value.isPlaying ? videoControl.pause() : videoControl.play();
});
}
...
void dispose() {
...
videoControl.dispose(); //释放视频资源
}