Flutter:如何避免改变方向?

Posted

技术标签:

【中文标题】Flutter:如何避免改变方向?【英文标题】:Flutter: How to avoid change orientation? 【发布时间】:2018-05-03 18:30:27 【问题描述】:

我有一个横向的最终用户设计。用户不想要/不需要纵向,需要避免在 ios/android 上自动更改方向。我怎样才能做到这一点?

【问题讨论】:

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

SystemChrome 是你想要的

您可以在 main.dart 中执行类似操作(不要忘记 import 'package:flutter/services.dart')

SystemChrome.setPreferredOrientations([
    DeviceOrientation.landscapeRight,
    DeviceOrientation.landscapeLeft,
]);

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

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

【讨论】:

需要导入吗?在 main() 内部?或 MyApp 类?请更具体一点。 SystemChrome(未定义名称)和 DeviceOrientation 上也有红色下划线。谢谢。 需要导入吗?是的!导入“包:flutter/services.dart”。在 main() 内部?是的。或 MyApp 类?也许是吧!。谢谢。 @abnerh69 - 要锁定 iOS 的方向,您需要更改 XCode 项目的设置(在终端中使用命令“open ios/Runner.xcworkspace”打开它) 有人知道,为什么倒置不起作用? DeviceOrientation.portraitDown,DeviceOrientation.portraitUp 不起作用。 有什么方法可以锁定应用程序特定屏幕的方向,而不是锁定应用程序的所有屏幕?【参考方案2】:
void main() 
  SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft])
    .then((_) 
      runApp(new MyApp());
    );

SystemChrome.setPreferredOrientations 返回一个未来。等到完成后,我们就可以启动我们的应用了。

【讨论】:

【参考方案3】:

在你的 main.dart 文件中添加这行代码 SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);

【讨论】:

以上是关于Flutter:如何避免改变方向?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Flutter 与 ERC721 智能合约交互?

如何检测 Flutter 中布局的方向变化?

如何在 Flutter 中检测设备运动方向?

Flutter:如何避免在现有路由上推送相同的路由

Flutter:如何防止我的主要小部件旋转并仍然跟踪它的方向?

Flutter:如何按需设置和锁定屏幕方向