Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 颤振-视频播放器侦听器被调用的速度非常慢_Flutter_Flutter Video Player - Fatal编程技术网

Flutter 颤振-视频播放器侦听器被调用的速度非常慢

Flutter 颤振-视频播放器侦听器被调用的速度非常慢,flutter,flutter-video-player,Flutter,Flutter Video Player,我想获得实时播放的视频的当前位置。我想用一个听者,但如果我这么做了: \u controller.addListener(()=>print(\u controller.value.position.in毫秒)) 它仅每500毫秒打印一次值。这太慢了,视频每33毫秒更新一次,甚至更频繁。任何人都知道为什么会发生这种情况,以及实现我想要的目标的正确方式是什么 另外,当视频开始时,我可以通过启动AnimationController来实现我想要的,但这似乎是一个黑客行为。延迟的原因是VideoPl

我想获得实时播放的视频的当前位置。我想用一个听者,但如果我这么做了:

\u controller.addListener(()=>print(\u controller.value.position.in毫秒))
它仅每500毫秒打印一次值。这太慢了,视频每33毫秒更新一次,甚至更频繁。任何人都知道为什么会发生这种情况,以及实现我想要的目标的正确方式是什么


另外,当视频开始时,我可以通过启动AnimationController来实现我想要的,但这似乎是一个黑客行为。

延迟的原因是
VideoPlayerController
每500毫秒通知一次听众。您可以使用
定时器
定期获取视频播放器的位置。下面是一个示例代码

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) async {
      print(await videoPlayerController.position);
    });
  }
  
  @override
  void dispose() {
    _timer?.cancel();
    videoPlayerController?.dispose();
    super.dispose();
  }
}
class VideoPlayerScreen扩展了StatefulWidget{
@凌驾
VideoPlayerState createState()=>VideoPlayerState();
}
类VideoPlayerState扩展状态{
定时器(u定时器),;
视频播放控制器;
void startTimer(){
_定时器=定时器。周期(常数持续时间(毫秒:100),(定时器)异步{
打印(等待videoPlayerController.位置);
});
}
@凌驾
无效处置(){
_计时器?.cancel();
videoPlayerController?.dispose();
super.dispose();
}
}

这对我不起作用。位置
videoPlayerController.value.position
仅每500毫秒更新一次,以便代码在同一位置上打印5次,然后在500毫秒前打印一个不同的位置!我已经更新了答案,请再次检查@若昂·奥布兰特斯