Flutter VideoPlayer插件如何获取当前播放状态?例如当前正在播放,暂停,缓冲等

21 min read

可以通过VideoPlayerController的status属性获取当前的播放状态。该属性返回一个枚举值,包括以下几种状态:

  • VideoPlayerControllerValue#status = PlayerStatus.unknown 表示播放状态未知。
  • VideoPlayerControllerValue#status = PlayerStatus.buffering 表示正在缓冲视频数据。
  • VideoPlayerControllerValue#status = PlayerStatus.playing 表示正在播放视频。
  • VideoPlayerControllerValue#status = PlayerStatus.paused 表示视频已暂停播放。
  • VideoPlayerControllerValue#status = PlayerStatus.completed 表示视频播放已完成。

代码示例:

VideoPlayerController _controller;

@override
void initState() {
  super.initState();
  _controller = VideoPlayerController.network('video_url..');
  _controller.initialize().then((_) {
    setState(() {
      // 视频已初始化完成,开始播放
      _controller.play();
    });
  });
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: _controller.value.isInitialized ? VideoPlayer(_controller) : CircularProgressIndicator(),
    ),
  );
}

// 获取视频播放状态
PlayerStatus status = _controller.value.status;
if (status == PlayerStatus.buffering) {
  // 正在缓冲视频数据
} else if (status == PlayerStatus.playing) {
  // 正在播放视频
} else if (status == PlayerStatus.paused) {
  // 视频已暂停播放
} else if (status == PlayerStatus.completed) {
  // 视频播放已完成
}