Flutter SystemChrome使用方法詳解
引言
SystemChrome 控制操作系統(tǒng)圖形界面的特定方面以及它如何與應(yīng)用程序交互。
需要注意的是在使用的時(shí)候一定要保證先執(zhí)行 WidgetsFlutterBinding.ensureInitialized();
setPreferredOrientations 設(shè)置橫屏或堅(jiān)屏
一般我們顯示是要強(qiáng)制堅(jiān)屏,只需要指定 DeviceOrientation.portraitUp 就夠了。
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
不需要再加上 DeviceOrientation.portraitDown,因?yàn)榧由弦膊粫?huì)有效果。
SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp,DeviceOrientation.portraitDown]);
這樣寫也可以,只有后面的 portraitDown 有點(diǎn)多余,如果可以的話,系統(tǒng)不允許在豎直方向倒過來,所以即使是手機(jī)設(shè)置中沒有打開方向鎖定,也不用擔(dān)心會(huì)倒過來。
如果想在豎直方向倒過來,可以只指定 portraitDown。這樣畫面就會(huì)一直倒置。
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown]);
如果想設(shè)置畫面水平一般會(huì)同時(shí)設(shè)置兩個(gè)。當(dāng)手機(jī)反轉(zhuǎn)的時(shí)候,畫面也可以隨著反轉(zhuǎn)。(沒有設(shè)置鎖定的情況下)
SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]);
只有禁用多任務(wù)處理時(shí),此設(shè)置才會(huì)在 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è)置沒生效,可以重新啟動(dòng) app 試試
全屏播放視頻
如果要全屏播放視頻可以做如下設(shè)置,橫屏,并去掉 overlays。
SystemChrome.setEnabledSystemUIMode(SystemUiMode.manual,overlays: []); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight]);
setSystemUIChangeCallback
只在 android 有效,SystemUiMode 設(shè)置 SystemUiMode.leanBack 或 SystemUiMode.immersive 或 SystemUiMode.immersiveSticky 的時(shí)候, overlays 會(huì)隨著與用戶交互消失或出現(xiàn),可以監(jiān)聽 setSystemUIChangeCallback 讓 overlays 自動(dòng)恢復(fù)原來的狀態(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了,否則會(huì)被 AppBar了 覆蓋。
AnnotatedRegion( child: Text('IAM17'), value: SystemUiOverlayStyle( statusBarColor: Colors.green, statusBarIconBrightness: Brightness.light, //底部navigationBar背景顏色 systemNavigationBarColor: Colors.white), )
以上就是Flutter SystemChrome使用方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Flutter SystemChrome使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Flutter框架實(shí)現(xiàn)Android拖動(dòng)到垃圾桶刪除效果
這篇文章主要介紹了Flutter框架實(shí)現(xiàn)Android拖動(dòng)到垃圾桶刪除效果,Flutter框架中的Draggable部件,用于支持用戶通過手勢(shì)拖動(dòng),它是基于手勢(shì)的一種方式,可以使用戶可以在屏幕上拖動(dòng)指定的部件,下面我們來詳細(xì)了解一下2023-12-12android實(shí)現(xiàn)raw文件夾導(dǎo)入數(shù)據(jù)庫代碼
這篇文章主要介紹了android實(shí)現(xiàn)raw文件夾導(dǎo)入數(shù)據(jù)庫代碼,有需要的朋友可以參考一下2013-12-12Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能
這篇文章主要介紹了Android實(shí)現(xiàn)閱讀進(jìn)度記憶功能,Android控件WebView實(shí)現(xiàn)保存閱讀進(jìn)度,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android編程開發(fā)ScrollView中ViewPager無法正?;瑒?dòng)問題解決方法
這篇文章主要介紹了Android編程開發(fā)ScrollView中ViewPager無法正?;瑒?dòng)問題解決方法,以實(shí)例形式分析了ScrollView中滑動(dòng)失效的原因及解決方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android實(shí)現(xiàn)SwipeRefreshLayout首次進(jìn)入自動(dòng)刷新
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)SwipeRefreshLayout首次進(jìn)入自動(dòng)刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01android開發(fā)之橫向滾動(dòng)/豎向滾動(dòng)的ListView(固定列頭)
由于項(xiàng)目需要,我們需要一個(gè)可以橫向滾動(dòng)的,又可以豎向滾動(dòng)的 表格;經(jīng)過幾天的研究終于搞定,感興趣的朋友可以了解下哦2013-01-01Android實(shí)現(xiàn)類似微信的文本輸入框 效果
本文給大家介紹一下微信的文本輸入框是如何實(shí)現(xiàn)的,其實(shí)那只是個(gè)普通的文本框設(shè)了一個(gè)特殊的背景而已。具體微信怎么實(shí)現(xiàn)的,大家可以反編譯下,這里介紹下如何實(shí)現(xiàn)這個(gè)背景2017-05-05Android中EditText setText方法的踩坑實(shí)戰(zhàn)
這篇文章主要給大家分享了一些關(guān)于Android中EditText setText方法的踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)各位Android開發(fā)者們具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-07-07