QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1930|回复: 0

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

[复制链接]

等级头衔

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

丰功伟绩

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

联系方式
发表于 2021-8-16 10:58:22 | 显示全部楼层 |阅读模式
       在一些特定的 App 里,我们不希望手机横屏的时候,App 发生旋转,比如微信,企业微信都是这样的。
) T1 _: `* J( n" o' d( B; C% n- f代码可以这样设定:
" ^% a: F; t% h0 D- Z7 Q$ ]
  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 的场景下,是可以横屏的,但是在其他界面下不可以横屏。这要怎么设置呢?
+ R+ B1 G( d" u/ ^  m4 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-23 16:13

Powered by paopaomj X3.5 © 2016-2025 sitemap

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