Flutter - слушатель video_player вызывается очень медленно - PullRequest
2 голосов
/ 04 августа 2020

Я хочу получить текущую позицию воспроизводимого видео в реальном времени. Я думал об использовании слушателя, но если я это сделаю:

_controller.addListener(() => print(_controller.value.position.inMilliseconds))

Он печатает значение только каждые 500 миллисекунд. Это слишком медленно, видео обновляется каждые 33 мс или даже чаще. Кто-нибудь знает, почему это происходит и как правильно достичь того, чего я хочу?

PS Я смог добиться того, чего хотел, запустив AnimationController при запуске видео, но это похоже на взлом.

1 Ответ

2 голосов
/ 08 августа 2020

Причина задержки в том, что VideoPlayerController уведомляет слушателей каждые 500 миллисекунд. Вы можете использовать Timer для периодического получения позиции видеоплеера. Вот пример кода для этого

class VideoPlayerScreen extends StatefulWidget {
  @override
  VideoPlayerState createState() => VideoPlayerState();
}

class VideoPlayerState extends State<VideoPlayerScreen> {
  Timer _timer;
  VideoPlayerController videoPlayerController;

  void startTimer() {
    _timer = Timer.periodic(const Duration(milliseconds: 100), (Timer timer) {
      print(videoPlayerController.value.position);
    });
  }
  
  @override
  void dispose() {
    _timer?.cancel();
    videoPlayerController?.dispose();
    super.dispose();
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...