Как зафиксировать приложение в портретном режиме в Flutter?

Чтобы предотвратить изменение ориентации устройства и зафиксировать ваше Flutter-приложение в портретном режиме, нужно настроить как нативные проекты для Android и iOS, так и сам Flutter.

Шаг 1: Обновите код Flutter

В файле main.dart можно заблокировать ориентацию в портретном режиме, добавив следующий код в функцию main:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Portrait App',
      home: Scaffold(
        appBar: AppBar(title: Text("Только портретный режим")),
        body: Center(child: Text("Это приложение работает только в портретном режиме!")),
      ),
    );
  }
}

Шаг 2: Настройте параметры Android

  1. Откройте файл AndroidManifest.xml, расположенный по пути android/app/src/main/AndroidManifest.xml.
  2. Внутри тега <activity> для вашей основной активности добавьте следующий атрибут, чтобы заблокировать ориентацию:
    <activity
        android:name=".MainActivity"
        android:label="flutter_app"
        android:configChanges="orientation|keyboardHidden|screenSize"
        android:screenOrientation="portrait"
        android:theme="@style/LaunchTheme"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
    

Это зафиксирует приложение в портретном режиме для Android.

Шаг 3: Настройте параметры iOS

  1. Откройте файл Info.plist, расположенный по пути ios/Runner/Info.plist.
  2. Добавьте следующие ключи, чтобы заблокировать ориентацию в портретном режиме:
    <key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    

Это зафиксирует ориентацию в портретном режиме для iOS.

Следуя этим шагам, ваше Flutter-приложение будет заблокировано в портретном режиме как на Android, так и на iOS.