Flutter SystemChrome使用方法詳解
引言
SystemChrome 控制操作系統(tǒng)圖形界面的特定方面以及它如何與應(yīng)用程序交互。
需要注意的是在使用的時候一定要保證先執(zhí)行 WidgetsFlutterBinding.ensureInitialized();
setPreferredOrientations 設(shè)置橫屏或堅屏
一般我們顯示是要強制堅屏,只需要指定 DeviceOrientation.portraitUp 就夠了。
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
不需要再加上 DeviceOrientation.portraitDown,因為加上也不會有效果。
SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp,DeviceOrientation.portraitDown]);
這樣寫也可以,只有后面的 portraitDown 有點多余,如果可以的話,系統(tǒng)不允許在豎直方向倒過來,所以即使是手機設(shè)置中沒有打開方向鎖定,也不用擔心會倒過來。
如果想在豎直方向倒過來,可以只指定 portraitDown。這樣畫面就會一直倒置。
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown]);
如果想設(shè)置畫面水平一般會同時設(shè)置兩個。當手機反轉(zhuǎn)的時候,畫面也可以隨著反轉(zhuǎn)。(沒有設(shè)置鎖定的情況下)
SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]);
只有禁用多任務(wù)處理時,此設(shè)置才會在 iPad 上生效。
setEnabledSystemUIMode 設(shè)置全屏顯示
用 manual 的方式可以指定顯下面或下面的 overlay,或都不顯示。
//都不顯示,全屏 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,overlays: []); //顯示上面 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,overlays: [SystemUiOverlay.top]); //顯示下面 SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,overlays: [SystemUiOverlay.bottom]);
setSystemUIOverlayStyle 設(shè)置 overlay 樣式,
overlay 的顯示樣式,比如可以顯示 dark style
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);
android 有效,ios 可能沒有效果。
如果有的設(shè)置沒生效,可以重新啟動 app 試試
全屏播放視頻
如果要全屏播放視頻可以做如下設(shè)置,橫屏,并去掉 overlays。
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,overlays: []); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]);
setSystemUIChangeCallback
只在 android 有效,SystemUiMode 設(shè)置 SystemUiMode.leanBack 或 SystemUiMode.immersive 或 SystemUiMode.immersiveSticky 的時候, overlays 會隨著與用戶交互消失或出現(xiàn),可以監(jiān)聽 setSystemUIChangeCallback 讓 overlays 自動恢復原來的狀態(tài)。
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersive);
SystemChrome.setSystemUIChangeCallback((systemOverlaysAreVisible) async {
await Future.delayed(const Duration(seconds: 1));
SystemChrome.restoreSystemUIOverlays();
});
AnnotatedRegion
如果想控制 status bar 的樣式還可以用 AnnotatedRegion,需要注意的是,使用 AnnotatedRegion 就不要使用 AppBar了,否則會被 AppBar了 覆蓋。
AnnotatedRegion(
child: Text('IAM17'),
value: SystemUiOverlayStyle(
statusBarColor: Colors.green,
statusBarIconBrightness: Brightness.light,
//底部navigationBar背景顏色
systemNavigationBarColor: Colors.white),
)以上就是Flutter SystemChrome使用方法詳解的詳細內(nèi)容,更多關(guān)于Flutter SystemChrome使用的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
完美解決客戶端webview持有的頁面緩存,不會立即釋放的問題
下面小編就為大家?guī)硪黄昝澜鉀Q客戶端webview持有的頁面緩存,不會立即釋放的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
Android Studio 3.3.2 正式版的安裝教程圖解
這篇文章主要介紹了Android Studio 3.3.2 正式版的安裝教程圖解,本文分步驟通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2020-02-02
Android使用ViewFlipper實現(xiàn)上下滾動消息
這篇文章主要為大家詳細介紹了Android使用ViewFlipper實現(xiàn)上下滾動消息,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-07-07
android的RecyclerView實現(xiàn)拖拽排序和側(cè)滑刪除示例
在平時開發(fā)應(yīng)用的時候,經(jīng)常會遇到列表排序、滑動刪除的需求。這篇文章主要介紹了android的RecyclerView實現(xiàn)拖拽排序和側(cè)滑刪除示例,有興趣的可以了解一下。2017-02-02
Android SwipeRefreshLayout下拉刷新源碼解析
這篇文章主要為大家詳細解析了Android SwipeRefreshLayout下拉刷新源碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
Android實現(xiàn)通過手勢控制圖片大小縮放的方法
這篇文章主要介紹了Android實現(xiàn)通過手勢控制圖片大小縮放的方法,結(jié)合實例形式分析了Android控制圖片縮放的原理、實現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2016-10-10
Android實現(xiàn)為ListView同時設(shè)置點擊時的背景和點擊松手之后的背景
這篇文章主要介紹了Android實現(xiàn)為ListView同時設(shè)置點擊時的背景和點擊松手之后的背景,以實例形式較為詳細的分析了界面元素與功能的實現(xiàn)技巧,非常具有實用價值,需要的朋友可以參考下2015-02-02

