当前正在使用来自给定链接的flutter video_player
插件流视频。问题是我必须隐藏普通的视频交互界面,以使用户无法跳过视频。现在大部分工作已经完成,只需要知道如何显示已播放视频的duration
和current position
。
[videoController.value.duration.inSeconds
给我duration
部分,videoController.value.position
给我position. But how to keep updating the results for the
位置`部分?
void checkTimer(){
if(playerController.value.position == playerController.value.duration){
setState(() {
Duration duration = Duration(milliseconds: playerController?.value?.position?.inMilliseconds?.round());
nowTime = [duration.inHours, duration.inMinutes, duration.inSeconds]
.map((seg) => seg.remainder(60).toString().padLeft(2, '0'))
.join(':');
});
}
以上代码已创建,可根据需要更新时间。但是现在的问题是如何更新时间。我应该使用setState()
还是其他名称,因为上述代码对我不起作用。
未加载视频,然后加载屏幕。当用户单击“播放”按钮时,它已加载。因此,在那之前,我们甚至还没有duration
值,因为数据仍在路上。
如何使用ValueListenableBuilder?
它将监听控制器的值并在每次值更改时对其进行更新。
这是示例:
ValueListenableBuilder(
valueListenable: playerController,
builder: (context, VideoPlayerValue value, child) {
//Do Something with the value.
return Text(value.position);
},
);