Flutter禁止手機橫屏的簡單實現方法
在一些特定的 App 裡,我們不希望手機橫屏的時候,App 發生旋轉,比如微信,企業微信都是這樣的。
代碼可以這樣設定:
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 函數裡,像上面那樣設定,就可以做到全局禁用橫屏模式瞭。
不過,在企業微信裡,我發現,並不是徹底禁用瞭橫屏模式,如果我在企業微信內部打開瞭一個網頁,這種場景下,就是可以橫屏過來用的。也就是,WebView 的場景下,我是可以橫屏的,但是在其他界面下不可以橫屏。這要怎麼設置呢?
@override void initState() { super.initState(); SystemChrome.setPreferredOrientations([ DeviceOrientation.landscapeLeft, DeviceOrientation.landscapeRight, DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); } @override void dispose() { SystemChrome.setPreferredOrientations([ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ]); super.dispose(); }
像這樣,設置到一個 StatefulWidget 的 initState 和 dispose 裡面就可以瞭。比如在我的代碼裡,我把 WebView 專門封裝瞭一個頁面,叫 WebPage,這樣設定後,當用戶進入網頁的時候,可以橫屏,但是退回後,就會強制恢復豎屏。
參考: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
總結
到此這篇關於Flutter禁止手機橫屏的文章就介紹到這瞭,更多相關Flutter禁止手機橫屏內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 為什麼不要在 Flutter 中使用全局變量
- Flutter學習筆記(一)配置環境
- flutter實現appbar下選項卡切換
- Windows下Flutter+Idea環境搭建及配置
- Flutter StreamBuilder實現局部刷新實例詳解