Поворот экрана может быть полезной функцией во многих мобильных приложениях, но в некоторых случаях ее можно отключить. В этой статье мы рассмотрим различные методы остановки вращения экрана во Flutter, а также примеры кода. Независимо от того, создаете ли вы игру или приложение, требующее фиксированной ориентации, эти методы помогут вам добиться желаемого поведения.
Метод 1: использование класса SystemChrome
Класс SystemChromeво Flutter предоставляет способ управления различным поведением на уровне системы, включая ориентацию экрана. Установив метод SystemChrome.setPreferredOrientationsсо списком желаемых ориентаций, вы можете эффективно отключить поворот экрана.
import 'package:flutter/services.dart';
// ...
void main() {
  // ...
  SystemChrome.setPreferredOrientations([
    DeviceOrientation.portraitUp,
  ]);
  // ...
}
В приведенном выше примере мы установили предпочтительную ориентацию portraitUp, которая блокирует экран в вертикальном портретном режиме. Вы можете добавить другие ориентации в соответствии с вашими требованиями.
Метод 2: использование виджета OrientationBuilder
Виджет OrientationBuilder — это полезный виджет, который перестраивает свой дочерний виджет при каждом изменении ориентации экрана. Обернув дерево виджетов OrientationBuilderи ограничив изменения макета в зависимости от желаемой ориентации, вы можете эффективно предотвратить поворот экрана.
import 'package:flutter/material.dart';
// ...
void main() {
  runApp(MyApp());
}
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: OrientationBuilder(
        builder: (context, orientation) {
          return Scaffold(
            appBar: AppBar(
              title: Text('Disable Screen Rotation'),
            ),
            body: Container(
              // Add your widget tree here
            ),
          );
        },
      ),
    );
  }
}
В этом примере OrientationBuilderоборачивает все дерево виджетов приложения, позволяя вам настроить макет в зависимости от текущей ориентации. Не включая необходимые макеты для ландшафтного режима, вы фактически отключите поворот экрана.
Метод 3: использование пакета flutter_screen_orientation
Пакет flutter_screen_orientationобеспечивает дополнительный контроль над ориентацией экрана во Flutter. Используя этот пакет, вы можете легко заблокировать экран в определенной ориентации или разрешить только определенные ориентации.
Чтобы использовать этот пакет, добавьте его в свой файл pubspec.yaml:
dependencies:
  flutter_screen_orientation: ^<version>
Затем вы можете использовать предоставленные методы, чтобы отключить поворот экрана:
import 'package:flutter_screen_orientation/flutter_screen_orientation.dart';
// ...
void main() {
  // ...
  FlutterScreenOrientation.disableScreenRotation();
  // ...
}
Метод disableScreenRotation()гарантирует, что экран останется зафиксированным в текущей ориентации.
Отключение поворота экрана в приложении Flutter имеет решающее значение в определенных сценариях. В этой статье мы рассмотрели три различных метода достижения этой цели: использование класса SystemChrome, использование виджета OrientationBuilderи использование пакета flutter_screen_orientation. Реализуя эти методы, вы можете эффективно заблокировать ориентацию экрана и обеспечить единообразие взаимодействия с пользователем в вашем приложении Flutter.