我想阻止我的应用程序改变其方向,并迫使布局坚持“纵向”。

大体上是这样。省道,我放:

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.setPreferredOrientations([
  DeviceOrientation.portraitUp,
]);

并且记得导入服务。飞镖文件。下面给出了一个例子!

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
    runApp(MyApp());
}


class MyApp extends StatelessWidget {
     @override
     Widget build(BuildContext context) {

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

      return MaterialApp(
        home: Scaffold(
          body: Center(child: Text("A Flutter Example!")),
     ),
   );
  }
}

setPreferredOrientation返回一个Future<void>,所以它是异步的。最易读的方法是将main定义为异步:

Future<void> main() async {
  await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
  return runApp(new MyApp());
}

对于新的颤振版本,随着设置首选方向,我们需要添加额外的一行,即

 WidgetsFlutterBinding.ensureInitialized();

这个的工作代码是-

import 'package:flutter/services.dart';
    void main() {
          WidgetsFlutterBinding.ensureInitialized();
          SystemChrome.setPreferredOrientations([
            DeviceOrientation.portraitUp,
            DeviceOrientation.portraitDown
          ]);
          runApp(MyApp());
        }

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。您可以在“常规>部署信息”上找到此选项。看看你想要什么

首先主要导入这一点。飞镖文件

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()),
      );