如何在颤动中强制应用程序进入肖像模式

Posted

技术标签:

【中文标题】如何在颤动中强制应用程序进入肖像模式【英文标题】:How to force the application to Portrait mode in flutter 【发布时间】:2019-01-24 07:03:39 【问题描述】:
void main()
  ///
  /// Force the layout to Portrait mode
  /// 
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown
  ]);

  runApp(new MyApp());

【问题讨论】:

请找到这个更新的答案***.com/a/50884081/348589 【参考方案1】:

将此代码放在 MyApp() 中,不要忘记导入服务包:

  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);

如下:

import 'package:flutter/services.dart';

class MyApp extends StatelessWidget 
    @override
    Widget build(BuildContext context) 
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
      return new MaterialApp();
    
  

更新

根据@F-1 的评论,有一个错误会阻止此代码在 ipad github.com/flutter/flutter/issues/27235 上运行。

下面的评论可能会对你有所帮助。

https://github.com/flutter/flutter/issues/27235#issuecomment-508995063

【讨论】:

我刚刚编辑了这个,但它似乎无论如何都不起作用……至少在 ios 中不起作用。 @Hasen 我已经添加了运行良好的代码。 有一个错误阻止此代码在 ipad 上运行 github.com/flutter/flutter/issues/27235【参考方案2】:

这是适用于androidiOS 的代码

Future main() async 
  await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
  runApp(new MyApp());

【讨论】:

在撰写本文时,这不适用于 iPad github.com/flutter/flutter/issues/27235【参考方案3】:

以下代码对我有用。

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_app/splashScreen.dart';

    void main() 
      WidgetsFlutterBinding.ensureInitialized();
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);

  runApp(MaterialApp(home: splashScreen(),));

【讨论】:

以上是关于如何在颤动中强制应用程序进入肖像模式的主要内容,如果未能解决你的问题,请参考以下文章

Android 画中画肖像模式

在颤动中强制纵向视图

如何在颤动中使用 bloc 模式进行错误处理?

Android 应用程序一直处于竖屏模式(又称肖像模式)

在 Flutter 中强制纵向方向时出错

UISplitViewController - 主弹出框 - 肖像模式:如何自定义/删除最顶层的边框?