Skip to content

Instantly share code, notes, and snippets.

@blendthink
Last active August 4, 2022 03:55
Show Gist options
  • Save blendthink/7529efc701be36b9bd1f3a9b55570225 to your computer and use it in GitHub Desktop.
Save blendthink/7529efc701be36b9bd1f3a9b55570225 to your computer and use it in GitHub Desktop.
Flutter で縦画面固定

Android での対応

  • android/app/src/main/AndroidManifest.xml を以下のように修正する
             android:theme="@style/LaunchTheme"
             android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
             android:hardwareAccelerated="true"
+            android:screenOrientation="portrait"
             android:windowSoftInputMode="adjustResize">
             <!-- Specifies an Android theme to apply to this Activity as soon as
                  the Android process has started. This theme is visible to the user

iOS での対応

  • ios/Runner/AppDelegate.swift で UIInterfaceOrientationMask の記述部分があれば削除する
  • ios/Runner/Info.plist を以下のように修正する
        <key>UISupportedInterfaceOrientations</key>
        <array>
                <string>UIInterfaceOrientationPortrait</string>
-               <string>UIInterfaceOrientationLandscapeLeft</string>
-               <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>UISupportedInterfaceOrientations~ipad</key>
        <array>
                <string>UIInterfaceOrientationPortrait</string>
-               <string>UIInterfaceOrientationPortraitUpsideDown</string>
-               <string>UIInterfaceOrientationLandscapeLeft</string>
-               <string>UIInterfaceOrientationLandscapeRight</string>
        </array>
        <key>UIViewControllerBasedStatusBarAppearance</key>
        <false/>

注意点

  • SystemChrome.setPreferredOrientations の方法では制限事項があり、特定の条件では機能しない
  • iOS で Requires full screen を有効にしても縦画面固定にできるが、iPad のマルチタスキング機能(Slide Over や Split View)が利用できなくなるため要注意
  • iOS で特定の画面の向きを固定したい場合、UIInterfaceOrientationMask を利用することがある
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment