QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

泡泡马甲APP 更多内容请下载泡泡马甲手机客户端APP 立即下载 ×
查看: 1862|回复: 0

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

[复制链接]

等级头衔

积分成就    金币 : 2804
   泡泡 : 1516
   精华 : 6
   在线时间 : 1243 小时
   最后登录 : 2024-5-2

丰功伟绩

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

联系方式
发表于 2021-8-16 10:58:22 | 显示全部楼层 |阅读模式
       在一些特定的 App 里,我们不希望手机横屏的时候,App 发生旋转,比如微信,企业微信都是这样的。" h6 V) X4 i8 P" {
代码可以这样设定:) X/ j- e  V7 m1 m( |6 |4 f+ M
  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 的场景下,是可以横屏的,但是在其他界面下不可以横屏。这要怎么设置呢?4 x; r, {5 ~% K  t
  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号 )

GMT+8, 2024-5-3 12:28

Powered by paopaomj X3.4 © 2016-2024 sitemap

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