Как перевести мое приложение в ландшафтный режим во Flutter?

Я хочу установить ориентацию моего приложения по умолчанию как альбомную, например, когда я открываю игровое приложение, такое как Clash of Clans или Mobile Legend. Как я могу сделать это в флаттере?


person Rinzin    schedule 17.09.2018    source источник
comment
Добро пожаловать в СО. Не могли бы вы описать вашу проблему подробнее, пожалуйста? Например. добавив код, команды или снимки экрана, которые описывают вашу проблему. Пожалуйста, также загляните в Справочный центр, особенно для запроса и минимум примеров. Спасибо.   -  person CKE    schedule 17.09.2018


Ответы (4)


Поместите этот код в MyApp()

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

Как показано ниже:

class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.landscapeLeft,
        DeviceOrientation.landscapeRight,
      ]);
      return new MaterialApp();
    }
  }

Если вам нужен портретный режим, ознакомьтесь с этим ответом.

person ibhavikmakwana    schedule 17.09.2018
comment
Используя приведенное выше решение, я думаю, что в первый раз приложение откроется в портретном режиме, а затем, после изменения ориентации с портретной на альбомную, оно сохранит альбомную. Я имею в виду, что вы должны изменить портретную ориентацию в первый раз на альбомную. Приложение не будет открываться с альбомной ориентацией. - person iPatel; 26.08.2019

Вы должны настроить iOS и Android по отдельности.

Для iOS перейдите в Xcode, выберите свой проект> Общие> Информация о развертывании> Ориентация устройства и выберите только параметры альбомной ориентации.

Для Android добавьте android:screenOrientation="landscape" к тегу <activity>.

person tudorprodan    schedule 17.09.2018
comment
Я обнаружил, что мне нужно сделать это, и что @diegoveloper предлагает заставить приложение Flutter немедленно запускаться и оставаться только в ландшафтном режиме. - person Hahnemann; 02.01.2019

Используйте SystemChrome.setPreferredOrientations, чтобы установить альбомный или портретный режим при запуске основного виджета.

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

        class MyApp extends StatelessWidget {
          // This widget is the root of your application.
          @override
          Widget build(BuildContext context) {
            config();
            return MaterialApp(
              title: ...
            );
          }

         void config() {
            SystemChrome.setPreferredOrientations([
              DeviceOrientation.landscapeLeft,
              DeviceOrientation.landscapeRight
            ]);
          }
person diegoveloper    schedule 17.09.2018
comment
Это сработало для меня. Убедитесь, что вы вызываете метод config(), желательно внутри основного метода. - person Frank; 13.08.2019

Для Android setPreferredOrientations отлично работает.

Но для iOS мы должны использовать это решение (как для телефона, так и для iPad): https://github.com/flutter/flutter/issues/13238#issuecomment-432981342

person Hưng Nguyễn Trần Gia    schedule 24.11.2020