QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 1935|回复: 0

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

[复制链接]

等级头衔

积分成就    金币 : 2851
   泡泡 : 1516
   精华 : 6
   在线时间 : 1305 小时
   最后登录 : 2024-12-7

丰功伟绩

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

联系方式
发表于 2021-8-16 10:58:22 | 显示全部楼层 |阅读模式
       在一些特定的 App 里,我们不希望手机横屏的时候,App 发生旋转,比如微信,企业微信都是这样的。
. c$ U2 {6 W) \5 a$ C9 `" D代码可以这样设定:1 X% E+ N  F9 c. ?; L
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 的场景下,是可以横屏的,但是在其他界面下不可以横屏。这要怎么设置呢?4 {- U9 I+ r! E8 ]' O
@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,这样设定后,当用户进入网页的时候,可以横屏,但是退回后,就会强制恢复竖屏。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-7 06:43

Powered by paopaomj X3.5 © 2016-2025 sitemap

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