QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1929|回复: 0

[Android/IOS] Flutter如何实现禁止手机横屏的功能

[复制链接]

等级头衔

积分成就    金币 : 2841
   泡泡 : 1516
   精华 : 6
   在线时间 : 1294 小时
   最后登录 : 2024-11-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2021-8-16 10:58:22 | 显示全部楼层 |阅读模式
       在一些特定的 App 里,我们不希望手机横屏的时候,App 发生旋转,比如微信,企业微信都是这样的。: @: U4 T' ^1 f* d* g5 X+ A. Y
代码可以这样设定:
3 n/ ~8 H/ z( Y; y4 V# }
  1. import 'package:flutter/services.dart';
  2. void main() async => {
  3.   WidgetsFlutterBinding.ensureInitialized();
  4.   await SystemChrome.setPreferredOrientations(
  5.     [
  6.       DeviceOrientation.portraitUp,   // 竖屏 Portrait 模式
  7.       DeviceOrientation.portraitDown,
  8.       // DeviceOrientation.landscapeLeft, // 横屏 Landscape 模式
  9.       // DeviceOrientation.landscapeRight,
  10.     ],
  11.   );
  12.   runApp(MainApp());
  13. };
      在 main 函数里,像上面那样设定,就可以做到全局禁用横屏模式了。不过,在企业微信里,并不是彻底禁用了横屏模式,如果在企业微信内部打开了一个网页,这种场景下,就是可以横屏过来用的。也就是WebView 的场景下,是可以横屏的,但是在其他界面下不可以横屏。这要怎么设置呢?! z3 m1 a5 @! z! }7 p1 e+ Z. M
  1. @override
  2.   void initState() {
  3.     super.initState();
  4.     SystemChrome.setPreferredOrientations([
  5.       DeviceOrientation.landscapeLeft,
  6.       DeviceOrientation.landscapeRight,
  7.       DeviceOrientation.portraitUp,
  8.       DeviceOrientation.portraitDown,
  9.     ]);
  10.   }
  11.   @override
  12.   void dispose() {
  13.     SystemChrome.setPreferredOrientations([
  14.       DeviceOrientation.portraitUp,
  15.       DeviceOrientation.portraitDown,
  16.     ]);
  17.     super.dispose();
  18.   }
      像这样,设置到一个 StatefulWidget 的 initState 和 dispose 里面就可以了。比如在代码里,把 WebView 专门封装了一个页面,叫 WebPage,这样设定后,当用户进入网页的时候,可以横屏,但是退回后,就会强制恢复竖屏。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-11-22 02:47

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表