How to Set and Lock Screen Orientation on Demand in Flutter

How to Set and Lock Screen Orientation on Demand in Flutter

19 December 2024 Stephan Petzl Leave a comment Tech-Help

When developing a Flutter application, you might encounter scenarios where you need to lock the screen orientation to either landscape or portrait mode, but only for specific screens. This guide will walk you through the steps to achieve this functionality, ensuring that your app provides the desired user experience.

Implementing Screen Orientation Lock

The most effective method to set and lock screen orientation on-demand is by utilizing the SystemChrome class from the services.dart package. This approach allows you to control the device’s orientation dynamically within different parts of your Flutter app.

Step-by-Step Guide:

  1. First, import the services.dart package to gain access to the SystemChrome class:
    import 'package:flutter/services.dart';
  2. In the widget where you want to lock the orientation, use the initState method to set the preferred orientations:
    
    @override
    void initState(){
      super.initState();
      SystemChrome.setPreferredOrientations([
          DeviceOrientation.landscapeRight,
          DeviceOrientation.landscapeLeft,
      ]);
    }
          
  3. When leaving the page or screen, ensure you reset the orientation to allow other orientations as needed:
    
    @override
    void dispose(){
      SystemChrome.setPreferredOrientations([
        DeviceOrientation.landscapeRight,
        DeviceOrientation.landscapeLeft,
        DeviceOrientation.portraitUp,
        DeviceOrientation.portraitDown,
      ]);
      super.dispose();
    }
          

This method effectively locks the screen orientation to landscape mode while on the specified page, and reverts back to allowing all orientations when leaving the page.

Considerations for iOS Devices

For iOS devices, particularly iPads, you might need additional configurations due to their support for multitasking. Ensure that the UIRequiresFullScreen key is set in your app’s info.plist file to prevent multitasking from interfering with your orientation settings.

Example Configuration:


UIRequiresFullScreen

  

Enhancing Your Testing Process

When developing mobile applications, ensuring that your app functions correctly across different orientations can be challenging. This is where automated testing tools like Repeato can be incredibly beneficial. Repeato is a no-code test automation tool designed for iOS and Android applications, including those built with Flutter. It allows you to create, run, and maintain automated tests effortlessly, using computer vision and AI to simulate user interactions.

By integrating Repeato into your development workflow, you can efficiently test various screen orientations and other functionalities, ensuring a smooth user experience across all devices.

For more information on using Repeato for your Flutter projects, visit our documentation page.

Like this article? there’s more where that came from!