📜  在Flutter限制横向模式

📅  最后修改于: 2021-09-02 05:15:45             🧑  作者: Mango

在本文中,我们将学习如何在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 来实现。