如何为 iOS 强制颤动设备方向

Posted

技术标签:

【中文标题】如何为 iOS 强制颤动设备方向【英文标题】:How to force flutter device orientation for iOS 【发布时间】:2020-02-08 23:43:05 【问题描述】:

我想强制我的应用程序的某些页面的方向。就像,我希望着陆页、游戏选项和玩家选择的方向为纵向,但我想在游戏开始时强制方向为横向...我尝试使用:

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

它确实适用于android,(除了它在获得正确方向之前改变方向3次......)但在ios上,它不会强制改变......它只会在你转动设备时改变然后它工作并保持在横向模式。

有没有人遇到过同样的问题并知道如何解决?

我尝试将 SystemChrome.setPreferredOrientations 放入 Widget 构建函数中,但没有成功。

【问题讨论】:

请看***.com/a/50884081/4975404在答案的底部我想它有你要找的答案。 【参考方案1】:

请试试这个。

void main() 
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
    .then((_) 
      runApp(new MyApp());
    );

第二种方式:

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

支持的方向列表是:

landscapeLeft
landscapeRight
portraitDown
portraitUp

【讨论】:

不起作用...它不会转动视图,它只是在您物理更改手机的方向时起作用。即使手机是纵向的,我也想这样做【参考方案2】:

导入package:flutter/services.dart,然后

SystemChrome.setPreferredOrientations 放入Widget build() 方法中。

例子:

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

【讨论】:

以上是关于如何为 iOS 强制颤动设备方向的主要内容,如果未能解决你的问题,请参考以下文章

IOS 6强制设备方向为横向

如何为 iTunes 连接提供强制更新?

如何为 UIPopoverController 强制设置黑色边框

如何为 Instagram 应用内网络浏览器强制刷新页面?

如何在 React Native 中根据设备类型设置强制设备方向?

在 iOS 9 中强制视图控制器方向