我正在使用flutter video_player
包播放一个列表的视频。
List sourceList;
sourceList = [
{
"size": 69742504,
"name": "lucky-roulette.mp4",
"mimetype": "video/mp4",
},
{
"size": 69742504,
"name": "BigBuckBunny.mp4",
"mimetype": "video/mp4",
}
];
我已经检查了this issue,并在它上面做了一些自定义代码。
void play() {
log.fine("Now playing: $_nowPlayingUrl");
_adController = VideoPlayerController.network(_nowPlayingUrl);
_adController.initialize().then((_) => setState(() {}));
_adController.play();
_adController.addListener(checkIfVideoFinished);
}
void checkIfVideoFinished() {
if (_adController == null ||
_adController.value == null ||
_adController.value.position == null ||
_adController.value.duration == null) return;
if (_adController.value.position.inSeconds ==
_adController.value.duration.inSeconds) {
_adController.removeListener(checkIfVideoFinished);
_adController.dispose();
// Change _nowPlayingIndex
setState(() {
_nowPlayingIndex = (_nowPlayingIndex + 1) % _totalIndex;
});
play();
}
}
但使用此代码片段将发出异常Another exception was thrown: A VideoPlayerController was used after being disposed.
有没有更好的方法在Flutter中播放和循环视频列表?
4条答案
按热度按时间odopli941#
最近我测试了视频列表示例。请在github FlutterVideoListSample中查看源代码。我认为视频部件必须被处理掉。
在我的例子中,我在初始化之前清除旧的VideoPlayerController。我不使用
chewie
插件,使新的页面进入全屏,所以不能处理下一个视频部件。中的一些代码FlutterVideoListSample
zte4gxcn2#
必须在Override dispose方法中调用视频控制器dispose方法。removevideo时不需要调用dispose方法。
qojgxg4l3#
这是我如何播放视频列表,我展示了这个来自flutter web应用程序的示例,其中大多数视频播放器都不支持,这就是为什么我使用默认播放器。
但是在Android和IOS上,这个任务在
chewie
或better_player
包的帮助下非常容易完成。这些软件包提供了非常丰富的配置步骤。希望它会对你的情况有所帮助。
taor4pac4#
对于任何仍然有问题的人,我能够找到一种方法来解决它。
现在你应该有一个从你的设备中选择视频的功能:::
然后在UI部分:
注意:你可以把'_chooseFromGallery'函数挂接到任何你想使用的小部件上,可以是一个按钮。