web-dev-qa-db-ja.com

Flutterで動画のリストを再生する方法は?

フラッターを使用しています 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でビデオのリストを再生してループするより良い方法はありますか?

3
Bobson Lin

オーバーライドのdisposeメソッドでビデオコントローラーのdisposeメソッドを呼び出す必要があります。 removevideoのときにdisposeメソッドを呼び出す必要はありません。

1
Akio Alex