Как заставить флаттер ориентировать устройство для iOS - PullRequest
0 голосов
/ 11 октября 2019

Я хочу усилить ориентацию некоторых страниц моего приложения. Например, я хочу, чтобы ориентация была «Портрет» для целевой страницы, параметров моей игры и выбора игрока, но я хочу, чтобы ориентация была горизонтальной в начале игры ... Я попытался использовать:

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

и он работает на Android, (за исключением того, что он меняет ориентацию 3 раза, прежде чем получить правильную ориентацию ...) Но на iOS это не вызывает изменения ... Он меняется только при поворотеустройство, а затем оно работает и остается в ландшафтном режиме.

Кто-нибудь имел такую ​​же проблему и знает, как ее исправить?

Я пытался вставить SystemChrome.setPreferredOrientations в функцию сборки Widget, но она не работала.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Импорт package:flutter/services.dart, затем

Поместите SystemChrome.setPreferredOrientations в метод build () виджета.

Пример:

  class MyApp extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
      return new MaterialApp(...);
    }
  }
0 голосов
/ 11 октября 2019

Пожалуйста, попробуйте это.

void main() {
  SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp])
    .then((_) {
      runApp(new MyApp());
    });
}

2-й путь:

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

Список поддерживаемых ориентаций:

landscapeLeft
landscapeRight
portraitDown
portraitUp
...