繁体   English   中英

以编程方式改变方向

[英]Programmatically change orientation

Flutter 有一个名为setPreferredOrientations()的内置方法。 根据我的理解,这个 function 锁定了 arguments 中设置的方向。我只想改变方向,而不是锁定它。 我的用例如下:

  • 用户可以全屏模式查看图像
  • 许多用户在他们的系统设置中关闭设备旋转
  • 为了避免必须启用和禁用设备旋转以将图像旋转为横向,我想要一个“旋转”按钮来为用户旋转布局(并允许他们将其旋转回来),而不是需要物理旋转他们的设备。

对此有什么想法吗? 谢谢!

Flutter有一个内置的名为setPreferredOrientations()方法。 据我了解,该函数锁定参数中设置的方向。 相反,我只是想更改方向,但不锁定它。 我的用例如下:

  • 用户可以全屏模式查看图像
  • 许多用户在其系统设置中未启用设备旋转功能
  • 为了避免必须启用和禁用设备旋转以将图像旋转到横向的工作,我想使用一个“旋转”按钮来为用户旋转布局(并允许他们向后旋转),而不需要实际旋转他们的设备。

有什么想法吗? 谢谢!

我认为 Apurv Jha 的回答应该有效。 我还认为它是从这里偷来的: Flutter:如何按需设置和锁定屏幕方向

你试过这个吗:你可能想在不同的地方使用来自initState的代码。 例如,在小部件的onPressedonTap参数中。 然后创建一个 state 指示设备是否旋转。 它可能是一个简单的布尔值或某种在按下按钮时使设备旋转的方法。 然后根据 state 将方向设置为不同于 state 上的方向并更新 state。

您可以使用 bool 变量标志,而不是在 dispose 方法中更改 setPreferredOrientations() arguments。

每当用户单击旋转按钮时,如果默认值为 true,则检查变量,然后将变量设置为 false 并将方向设置为横向,如果其值不等于默认值,则将方向更改为纵向。

if(flag == true)
    SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
    DeviceOrientation.portraitDown,
  ]);
else
    SystemChrome.setPreferredOrientations([
    DeviceOrientation.landscapeRight,
    DeviceOrientation.landscapeLeft,
  ]);

并在处理方法中将 arguments 设置为默认值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM