Flutter:如何避免屏幕方向改变?

8

我有一个横向方向的最终用户设计。用户不想/不需要纵向,需要避免iOS / Android上的自动方向更改。如何实现这一点?


请找到这个更新的答案:https://dev59.com/l1UM5IYBdhLWcg3wCstZ#50884081 - Shady Mohamed Sherif
3个回答

18
SystemChrome 是您想要的内容。
您可以在 main.dart 中执行以下操作(不要忘记导入 'package:flutter/services.dart')。
SystemChrome.setPreferredOrientations([
    DeviceOrientation.landscapeRight,
    DeviceOrientation.landscapeLeft,
]);

不幸的是,在我的应用程序中执行此操作时,方向将始终为landscapeRight

要锁定iOS设备的方向,您需要更改XCode项目的设置(在终端中使用命令'open ios/Runner.xcworkspace'打开它)。


1
需要导入任何库吗?在 main() 函数内还是在 MyApp 类中?请具体说明。SystemChrome 下方有红线,显示为 Undefined name,DeviceOrientation 也是如此。谢谢。 - abnerh69
2
需要任何导入吗?是的!导入'package:flutter/services.dart'。在main()函数内部吗?是的。或者在MyApp类中吗?也许是的!谢谢。 - abnerh69
2
@abnerh69 - 要锁定iOS的方向,您需要更改XCode项目的设置(使用终端中的命令“open ios/Runner.xcworkspace”打开它)。 - Nathan Bird
有人知道为什么倒立模式不起作用吗?DeviceOrientation.portraitDown和DeviceOrientation.portraitUp都无法正常工作。 - Auryn
1
有没有办法锁定应用程序特定屏幕的方向,而不是所有屏幕的方向? - Michael Nelson

15
void main() {
  SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft])
    .then((_) {
      runApp(new MyApp());
    });
}

SystemChrome.setPreferredOrientations 返回一个 Future。等待它完成后,我们就可以启动我们的应用程序。


3

在你的main.dart文件中添加以下代码:

SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);

该代码用于设置应用程序只支持竖屏模式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接