Flutter 如何實現(xiàn)禁止手機(jī)橫屏的功能

import 'package:flutter/services.dart';void main() async => {WidgetsFlutterBinding.ensureInitialized();await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp, // 豎屏 Portrait 模式DeviceOrientation.portraitDown,// DeviceOrientation.landscapeLeft, // 橫屏 Landscape 模式// DeviceOrientation.landscapeRight,],);runApp(MainApp());};
在 main 函數(shù)里,像上面那樣設(shè)定,就可以做到全局禁用橫屏模式了。
不過,在企業(yè)微信里,我發(fā)現(xiàn),并不是徹底禁用了橫屏模式,如果我在企業(yè)微信內(nèi)部打開了一個網(wǎng)頁,這種場景下,就是可以橫屏過來用的。
也就是,WebView 的場景下,我是可以橫屏的,但是在其他界面下不可以橫屏。這要怎么設(shè)置呢?
void initState() {super.initState();SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight,DeviceOrientation.portraitUp,DeviceOrientation.portraitDown,]);}void dispose() {SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp,DeviceOrientation.portraitDown,]);super.dispose();}
像這樣,設(shè)置到一個 StatefulWidget 的 initState 和 dispose 里面就可以了。
比如在我的代碼里,我把 WebView 專門封裝了一個頁面,叫 WebPage,這樣設(shè)定后,當(dāng)用戶進(jìn)入網(wǎng)頁的時候,可以橫屏,但是退回后,就會強(qiáng)制恢復(fù)豎屏。
參考:http://kmanong.top/kmn/qxw/form/article?id=2735&cate=93
參考:https://stackoverflow.com/questions/49418332/flutter-how-to-prevent-device-orientation-changes-and-force-portrait
學(xué)習(xí)更多技能
請點擊下方公眾號
![]()

評論
圖片
表情
