如何在Flutter中更改屏幕方向

  • 发表于
  • flutter

移动应用程序通常会开发同时支持纵向和横向屏幕的自动识别。但是在某些特殊情况下,您可能需要设置应用程序的方向以固定方向,以便为每个组件获取适当的真实状态空间。

Flutter设置屏幕方向

首先,您必须导入服务包。

import 'package:flutter/services.dart';

接下来,可以通过在SystemChrome类中将值设置为setPreferredOrientations方法来设置方向。在Flutter中,应用程序入口点是主要方法。因此,您可以在main方法中调用runApp方法之前设置方向。但是如果您需要在runApp方法之前调用绑定,则必须在WidgetsFlutterBinding类中调用ensureInitialized方法。

void main() {
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([DeviceOrientation.landscapeLeft]).then((_){
 runApp(MyApp());
 });
} 

仅设置横向

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

您可以设置landscapeLeft或landscapeRight使其以一种方式工作。

仅设置纵向

SystemChrome.setPreferredOrientations([DeviceOrientation.portraitDown,DeviceOrientation.portraitUp])

如果将手机上下颠倒时同时将portraitUp和portraitDown都设置为方向,它将旋转应用程序。如果您不喜欢上下颠倒地工作,则可以只设置portraitUp。

Flutter动态改变屏幕方向

这与上面的相同,您只需要在单击按钮或触发某些操作时使用相同的方法即可。

RaisedButton(
 child: Text("Portrait"),
onPressed: (){SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
 })

获取设备方向

使用Media Query在flutter应用程序中获取当前方向非常容易

MediaQuery.of(context).orientation

这将返回Orientation对象

MediaQuery.of(context).orientation == Orientation.landscape

通过使用此方法,您可以检查布局中的方向更改,并可以根据方向设置布局值。