软件编程
位置:首页>> 软件编程>> Android编程>> Flutter禁止手机横屏的简单实现方法

Flutter禁止手机横屏的简单实现方法

作者:Becomin'' Charles  发布时间:2022-12-06 19:56:34 

标签: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

来源:https://sexywp.com/flutter-disable-landscape-mode.htm

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com