我会分享一些在网上找不到,或者遇到问题并解决的事情。

最近在调研Flutter视频播放,在横屏切换到竖屏的时候遇到了点问题。代码如下:

class PortraitPage extends StatefulWidget {const PortraitPage({Key? key}) : super(key: key);@override_PortraitPageState createState() => _PortraitPageState();
}class _PortraitPageState extends State<PortraitPage> {VideoPlayerController? controller;@overridevoid initState() {super.initState();controller = VideoPlayerController.network("https://cdn-resource.ekwing.com/acpf/data/upload/expand/2017/08/29/59a53da773e00.mp4")..setLooping(true)..initialize().then((_) {controller!.play();});}@overridevoid dispose() {controller!.dispose();super.dispose();}@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(body: Column(children: [AspectRatio(aspectRatio: controller!.value.aspectRatio,child: VideoPlayer(controller!),),MaterialButton(onPressed: () {Navigator.push(context,MaterialPageRoute(builder: (context) => VideoFullPage(controller: controller!)));},child: Text("切换全屏"))],),),);}
}class VideoFullPage extends StatefulWidget {final VideoPlayerController controller;const VideoFullPage({Key? key, required this.controller}) : super(key: key);@override_VideoFullPageState createState() => _VideoFullPageState();
}class _VideoFullPageState extends State<VideoFullPage> {@overridevoid initState() {super.initState();SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,]);}@overridevoid dispose() {///页面退出时,切换为竖屏SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,]);super.dispose();}@overrideWidget build(BuildContext context) {return MaterialApp(home: Scaffold(backgroundColor: Colors.black,body: Stack(children: [Center(child: AspectRatio(aspectRatio: widget.controller.value.aspectRatio,child: VideoPlayer(widget.controller),),),Padding(padding: const EdgeInsets.only(top: 25, right: 20),child: IconButton(icon: const Icon(Icons.arrow_back_ios),color: Colors.white,onPressed: () {///点击返回,先切换竖屏,然后退出页面SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,]);Navigator.pop(context);},),)],),),);}
}

从竖屏切换到全屏没有问题,点击物理按键:Back,会出现先退出了页面,然后再切换到竖屏。体验效果不是很好,所以修改方案:

  1. 拦截返回按键。
  2. 先切换为竖屏,然后Navigator.pop(context)。
class _VideoFullPageState extends State<VideoFullPage> {@overridevoid initState() {super.initState();SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,]);}@overrideWidget build(BuildContext context) {return WillPopScope(child: MaterialApp(home: Scaffold(backgroundColor: Colors.black,body: Stack(children: [Center(child: Hero(tag: "player",child: AspectRatio(aspectRatio: widget.controller.value.aspectRatio,child: VideoPlayer(widget.controller),),),),Padding(padding: const EdgeInsets.only(top: 25, right: 20),child: IconButton(icon: const Icon(Icons.arrow_back_ios),color: Colors.white,onPressed: () {SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,]);Navigator.pop(context);},),)],),),),onWillPop: () async {SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,]);Navigator.pop(context);return false;});}
}

完整代码见GitHub

Flutter:视频全屏切换相关推荐

  1. 视频全屏非全屏切换,状态栏动态显示隐藏兼容性解决

    列表中视频全屏/非全屏切换时,需要动态显示/隐藏状态栏 View类提供了setSystemUiVisibility和getSystemUiVisibility方法,这两个方法实现对状态栏的动态显示或隐 ...

  2. html5仿抖音全屏播放,仿抖音视频全屏播放滑动切换

    1 前言 随着移动技术的快速迭代,数据流量费用的快速下降,视频.直播正成为全民的媒体盛宴,我司必然也不会缺席此次盛宴,这里讲述的是通过h5实现仿抖音视频全屏播放&滑动切换的效果,供我司直播鉴定 ...

  3. dplayer js控制 自动全屏_vue-video-player 通过自定义按钮组件实现全屏切换效果【推荐】...

    最近公司的产品上线,一些高级功能在基础版本中不对用户开发,通过视频的形式展示. 产品开发用的是 vue, 经同事介绍使用了vue-video-player视频播放插件,通过 demo案例很快实现了视频 ...

  4. PPAPI插件的全屏切换处理

    有时你会想让PPAPI插件全屏(比如播放视频时),这次来看看怎么做. PPAPI和CEF App两侧都要处理. foruok原创,转载请注明出处.欢迎关注foruok的订阅号"程序视界&qu ...

  5. android播放器竖屏,Android 巧用DecorView实现列表或详情视频播放器竖屏及全屏切换...

    在平时开发过程中,如果使用到视频播放器的功能,那就一定会涉及到全屏切换的操作 以往常规操作基本如下 设置全屏播放步骤 1.横屏 2.视频播放器尺寸调整 3.隐藏其他多余控件 恢复小屏播放 1.竖屏 2 ...

  6. 远程桌面退出全屏/不能全屏/全屏切换的技巧

    远程桌面退出全屏/不能全屏/全屏切换的技巧退出全屏 问:我的电脑远程登录到服务器上并且切换到了全屏状态,全屏后发现桌面顶部没有浮动工具栏了,想退出全屏状态,不知如何退出了,最后,只有重启电脑.想知道如 ...

  7. VirtualBox全屏切换

    用VirtualBox的时候,如果设置为全屏,想再切换回来,没有什么菜单,只有通过键盘的快捷键来操作,才可以恢复. 我常常忘掉,所以老是得去找,以后需要记住这几个按键的快捷键. 1.全屏与非全屏切换: ...

  8. 页面平滑过渡全屏切换

    实现效果为页面平滑过渡全屏切换,点击导航和鼠标滚动都可以切换. 效果图: 代码: <!DOCTYPE html> <html> <head lang="en&q ...

  9. 安卓微信下video退出视频全屏方法

    安卓微信下video退出视频全屏方法 在做h5项目的时候,安卓video全屏模式退出方案: <script>var video = document.getElementById('vid ...

  10. 1.视频全屏展示(适应各种屏幕尺寸)

    视频全屏展示(适应各种屏幕尺寸) 大概效果 方法一(不兼容所有IE) object-fit:fill; <div class="banner"><videosrc ...

最新文章

  1. LeetCode Binary Tree Right Side View(搜索)
  2. yaml 文件格式简介
  3. 【PAT甲级 素数判断 进制转换】1015 Reversible Primes (20 分) Java版 4/4通过
  4. 大一的时候我上铺一哥们天天说梦话,一夜,他羞涩的说:“我怀孕了。”我们全体晕倒。...
  5. 垃圾回收算法以及垃圾回收器_什么是垃圾回收?
  6. 建立你第一个 Outlook Add-in
  7. Gemini创始人:如果我是GameStop CEO 接下来我会买BTC
  8. Eclipse或MyEclipse—在Eclipse或MyEclipse中的操作(1)
  9. protect 继承_【private,public,protect三种继承方式的区别】
  10. 知识分享!什么是中继器?-道合顺大数据Infinigo
  11. 2018 蓝桥杯省赛 A 组模拟赛(一) 青出于蓝胜于蓝
  12. RK3288 开发板 排插物理引脚对应图以及如何进入android6.0.1内核终端、uboot终端
  13. 什么是虚拟主播?虚拟数字人直播,不用出镜,不用露脸的直播方式
  14. 上位机与1200组态步骤_西门子1200PLC的S7通讯组态编程
  15. python 椭圆曲线_椭圆曲线double和add在python中的实现
  16. 随机生成11位激活码
  17. DAY5:《鸟叔的linux私房菜》
  18. 怡丰机器人上市_成立三年之内 机器人领域的这些黑马公司不可不知
  19. 微软近日更新网页版Skype增通知版面和关键词搜寻
  20. win10或win7计算机右键管理打不开

热门文章

  1. linux服务器上有些文件看不到,linux执行脚本时找不到文件怎么解决
  2. 京东超市 导航条布局
  3. 主动微波遥感和被动微波遥感
  4. 微信小程序如何测试?
  5. Ubuntu 18.04 安装驱动
  6. python剪辑_用python进行视频剪辑
  7. Excel图表—泊松分布函数的概率分布图的绘制
  8. android手机怎么改字体,安卓字体怎么修改 安卓手机字体替换教程
  9. java爬虫搜狗微信_搜狗微信公众号文章抓取
  10. 需要升的不是舱,是京东的价值观!