我想阻止我的应用程序改变其方向,并迫使布局坚持“纵向”。
大体上是这样。省道,我放:
void main(){
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown
]);
runApp(new MyApp());
}
但当我使用Android模拟器旋转按钮时,布局“遵循”新的设备方向…
我怎么解决这个问题呢?
谢谢
android有两个选项
1. 写在主
main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) {
runApp(
child: MyApp(),
);
});
}
2. 在AndroidManifest.xml文件中设置
iOS上也有两种选择
1. 从info.plist
将这一行添加到您的信息中。plist文件
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
2. 从跑步者
打开你的奔跑者。Xcode的iOS文件夹中的xcworkspace。点击Runner而不是Pods。您可以在“常规>部署信息”上找到此选项。看看你想要什么
导入包:颤振/服务。飞镖,然后
放上SystemChrome。Widget build()方法中的setPreferredOrientations。
例子:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitUp,
DeviceOrientation.portraitDown,
]);
return new MaterialApp(...);
}
}
更新
如2019年10月更新的flutter文档中所述,此解决方案可能不适用于某些IOS设备。
他们建议通过在信息中设置UISupportedInterfaceOrientations来固定方向。请像这样
<array>
<string>UIInterfaceOrientationPortrait</string>
</array>
更多信息https://github.com/flutter/flutter/issues/27235#issuecomment-508995063
@boeledi,如果你想“锁定”设备方向,不允许它随着用户旋转他们的手机而改变,这很容易设置如下:
// This did not work as requirement
void main() {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
runApp(new MyApp());
}
你必须等到setPreferredOrientations完成,然后
启动应用程序
// This will works always for lock screen Orientation.
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
.then((_) {
runApp(new MyApp());
});
}
首先主要导入这一点。飞镖文件
import 'package:flutter/services.dart';
然后不要复制粘贴,而是看(记住)和写下面的代码在主要。飞镖文件
强制进入纵向模式:
void main() {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp,DeviceOrientation.portraitDown])
.then((_) => runApp(MyApp()),
);
在横屏模式下强制:
void main() {
SystemChrome.setPreferredOrientations(
[DeviceOrientation.landscapeLeft,DeviceOrientation.landscapeRight])
.then((_) => runApp(MyApp()),
);