Flutter中如何強制某個頁面橫屏

天國的502發表於2019-03-13

在很多文章中,提到了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,
}
複製程式碼

終於可以愉快的進行下去了。

相關文章