フラッターを使用しています video_player
ビデオのリストを再生するパッケージ。
List sourceList;
sourceList = [
{
"size": 69742504,
"name": "lucky-roulette.mp4",
"mimetype": "video/mp4",
},
{
"size": 69742504,
"name": "BigBuckBunny.mp4",
"mimetype": "video/mp4",
}
];
私は この問題 をチェックアウトし、それにいくつかのカスタムコードを実行しました。
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でビデオのリストを再生してループするより良い方法はありますか?
オーバーライドのdisposeメソッドでビデオコントローラーのdisposeメソッドを呼び出す必要があります。 removevideoのときにdisposeメソッドを呼び出す必要はありません。