flutter video_player实现监听和自动播放下一首歌曲
flutter 实现 监听 Video player 歌曲 自动播放
2023-09-14 09:04:29 时间
我的做法是通过监听歌曲的当前位置和总的时长,注意监听的位置,歌曲初始化后开始播放了再进行监听,最后记得销毁
@override
void initState() {
super.initState();
if (_videoPlayerController != null) {
//如果视频控制器存在,清理掉重新创建
_videoPlayerController.removeListener(_videoListener);
_videoPlayerController.dispose();
}
videoplay();
}
videoplay() {
_videoPlayerController = VideoPlayerController.network(
widget.videoList[curIndex])
// _videoPlayerController = VideoPlayerController.file(File("/storage/emulated/0/DCIM/pipixia/eecd00a7e13145ff84568fe4e10ea982.mp4"))
..initialize().then((_) {
// 确保在初始化视频后显示第一帧,直至在按下播放按钮。
setState(() {
_videoPlayerController.play();
});
});
//可以播放就开始监听
_videoPlayerController.addListener(_videoListener);
}
//监听的方法
void _videoListener() {
setState(() {
var curPosition = _videoPlayerController.value.position;
var totalPosition = _videoPlayerController.value.duration;
curPos = curPosition.toString().substring(2, 7);
// curPos=curPos.subString(0,2);
totalPos = totalPosition.toString().substring(2, 7);
print("当前位置${curPos},全部${totalPos}");
//如果当前位置是最后的位置就跳到下一首歌
if (curPosition.toString() != "0:00:00.000000" &&
curPosition == totalPosition) {
setState(() {
curIndex++;
if (curIndex >= widget.videoList.length) {
//循环回到第一首
curIndex = 0;
}
curId = widget.idList[curIndex];
getCommentLists();
videoplay();
});
}
});
}
@override
void dispose() {
_videoPlayerController.dispose();
_videoPlayerController.removeListener(_videoListener);
_commentController.dispose();
_focusNodeComment.dispose();
super.dispose();
}
相关文章
- Flutter使用Canvas实现小白兔的绘制
- Flutter BaseWidget 实现onResume、onPause()
- 重走Flutter状态管理之路—Riverpod最终篇
- flutter中如何优雅的使用日志
- 每日tips:Dart & Flutter Easy Wins 8-14
- flutter 自定义播放器进度条
- Flutter 实战-快速实现音视频通话应用
- 【Flutter 绘制探索】进度与裁剪 - CustomClipper 的使用
- Flutter 绘制探索 | 饼状图的绘制与事件
- Flutter 知识集锦 | 基于 Flow 实现滑动显隐层
- 移动应用客户端程序天花板-Flutter开发
- flutter系列之:在flutter中使用媒体播放器
- 【错误记录】Flutter 环境安装相关问题 ( 执行 flutter doctor 命令后续错误处理 )
- 【Flutter】StatelessWidget 组件 ( CloseButton 组件 | BackButton 组件 | Chip 组件 )
- 【错误记录】Flutter 报错 ( Dart SDK is not configured )
- 【错误记录】Flutter 报错 ( Could not resolve io.flutter:flutter_embedding_debug:1.0.0. )
- 【错误记录】Flutter 报错 ( Android Studio 中 main.dart 左侧不显示设备栏 )
- 【Flutter】打开第三方 Flutter 项目
- 【错误记录】Flutter 编译报错 ( The parameter ‘‘ can‘t have a value of ‘null‘ because of its type, but the im )
- 【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 在 Flutter 端实现 MethodChannel 通信 )
- 【Flutter】开发 Flutter 包和插件 ( 开发 Dart 插件包 | 发布 Dart 插件包 )
- Flutter 后台任务