flutter 多视频循环播放(轮播)

用的是flutter_ijkplayer,监听拿到complete状态,reset播放器,更新数据源播放下一个视频,主要做的是安卓,iOS的没有测试过,物理home键切后台,用生命周期状态控制暂停,切前台播放;物理返回键销毁播放器,用状态控制播放器的初始化。图片和视频轮播的切换用的是websocket。

之前用video_player写过视频轮播,但是状态获取和续播控制不好性能。。。flutter用起来ijkplayer还是比原生要方便很多,直接pub一下就行了,不用改任何配置,真香啊

https://github.com/partusorta/flutter-mediaplayer

===========前后台切换的控制

@override

void didChangeAppLifecycleState(AppLifecycleState state) {

if (state == AppLifecycleState.paused) {

if (controller != null && controller.ijkStatus == IjkStatus.playing) {

controller.pause();

}

} else if (state == AppLifecycleState.resumed) {

if (controller != null && controller.ijkStatus =

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flutter可以通过video_player插件来实现视频播放功能。下面是一个简单的示例代码: ```dart import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart'; void main() => runApp(VideoPlayerApp()); class VideoPlayerApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Video Player Demo', home: VideoPlayerScreen(), ); } } class VideoPlayerScreen extends StatefulWidget { @override _VideoPlayerScreenState createState() => _VideoPlayerScreenState(); } class _VideoPlayerScreenState extends State<VideoPlayerScreen> { VideoPlayerController _controller; Future<void> _initializeVideoPlayerFuture; @override void initState() { _controller = VideoPlayerController.network( 'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4'); _initializeVideoPlayerFuture = _controller.initialize(); super.initState(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('Video Player Demo'), ), body: FutureBuilder( future: _initializeVideoPlayerFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { return AspectRatio( aspectRatio: _controller.value.aspectRatio, child: VideoPlayer(_controller), ); } else { return Center( child: CircularProgressIndicator(), ); } }, ), floatingActionButton: FloatingActionButton( onPressed: () { setState(() { if (_controller.value.isPlaying) { _controller.pause(); } else { _controller.play(); } }); }, child: Icon( _controller.value.isPlaying ? Icons.pause : Icons.play_arrow, ), ), ); } } ``` 需要注意的是,视频播放需要网络支持,所以需要将视频文件上传到服务器上,并通过网络地址引用。在这个示例代码中,我们使用了Flutter官方提供的测试视频文件作为示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值