在本文中,我们将学习如何在flutter应用程序中限制横向模式。一个生产就绪的应用程序应该没有各种错误和错误。大多数情况下,我们为纵向设计我们的应用程序,如果我们翻转为横向,UI 可能不会为此调整。因此,有两种情况,首先是您的应用可以调整为横向,其次是您的应用可能不需要横向。因此,在第二种情况下,我们可以限制横向。这可以通过使用默认的SystemChrome类来完成。这个类有一个方法setPreferredOrientations,它获取需要在应用程序中实现的设备方向列表。
可用方向:
- 风景左
- 风景右
- 肖像向下
- 肖像向上
Syntax: SystemChrome.setPreferredOrientations([DeviceOrientation.yourChoice])
在这里, SystemChrome是控制许多设备功能的默认类。这个类有方法S etPreferredOrientations其中采用类型DeviceOrientation的列表,并且优选的取向可以被传递给它为列表。
例子:
Dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; //For using SystemChrome
void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations(
[DeviceOrientation.portraitUp]);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: Text('This app can\'t be rotated to Landscape mode',
style: TextStyle(color: Colors.green,
fontSize: 17),
),
),
),
);
}
}
输出:
如上所示的输出应用程序将仅限于纵向模式。即使您旋转设备,它也不会更改为横向模式。
要记住的要点:
- 不要忘记包含import ‘package: flutter/services.dart’;因为 SystemChrome 是在服务中定义的。dart文件。
- 还要添加WidgetsFlutterBinding.ensureInitialized();在使用 SystemChrome 类之前。如果不添加这行代码,则方向限制可能不适用于某些设备。在较新版本的Flutter,需要添加此方法。
- 如果您的目标设备是 iPad,那么上述代码仅在禁用多任务处理的情况下才有效。
- 为了解决这个问题,你可以在 iPad 上选择退出多任务处理,那么上面的代码就可以工作了,但是你的应用程序不支持 Slide Over 和 Split View 多任务处理。
- 如果您决定退出多任务处理,您可以通过将 Xcode 部署信息中的“需要全屏”设置更改为 true 来实现。