Flutter中如何强制某个页面横屏

在很多文章中,提到了Flutter中强制某个页面横屏使用如下代码

SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown
  ]);

然而在实际操作过程中,这样的代码在Android上是可以达到效果的,然而iOS中并不能达到预期的目标,需要手动旋转手机。

原因可能在于iOS中对应的代码仅仅是限定了当前屏幕的可用方向。但是当手机没有旋转的时候,屏幕会一直保持在当前的方向上,所以这行代码实际上并不好用。

很遗憾,有很多开发者进行了反馈,然而官方目前为止并没有修复这个BUG

SystemChrome.setPreferredOrientations does not force the device to the given orientations until the device is physically rotated #13238

难道真的没有解决办法么?其实有,iOS可以用原生的方式进行旋转,可是这样太不讲究了(出现了,讲究怪!)

pub上有这样一个package

orientation

使用方法很简单,一行代码就可以解决问题

    OrientationPlugin.forceOrientation(DeviceOrientation.landscapeLeft);

其中,forceOrientation中的参数为你希望的设备方向

enum DeviceOrientation {
  portraitUp,
  landscapeLeft,
  portraitDown,
  landscapeRight,
}

终于可以愉快的进行开发了。

    原文作者:天国的502
    原文地址: https://www.jianshu.com/p/3a52dc00b90b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞