[flutter] device_info 라이브러리를 사용하여 디바이스의 화면 회전 가능 여부 확인하기

화면 회전 기능은 모바일 애플리케이션에서 중요한 기능 중 하나입니다. 사용자가 디바이스를 회전시키면 애플리케이션의 UI가 자동으로 회전되어야 합니다. Flutter에서는 device_info 라이브러리를 사용하여 디바이스의 화면 회전 가능 여부를 확인할 수 있습니다.

device_info 라이브러리 추가하기

먼저, device_info 라이브러리를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 다음과 같이 의존성을 추가합니다:

dependencies:
  device_info: ^2.0.3

의존성을 추가한 후, pub get 명령어를 실행하여 의존성을 가져옵니다.

디바이스 화면 회전 가능 여부 확인하기

device_info 라이브러리를 사용하여 디바이스의 화면 회전 가능 여부를 확인하려면 다음의 단계를 따릅니다:

  1. package:device_info/device_info.dart 패키지를 import 합니다.
  2. DeviceInfoPlugin 인스턴스를 만듭니다.
  3. await deviceInfoPlugin.androidInfo 메서드를 사용하여 안드로이드 디바이스 정보를 가져옵니다.
  4. screenOrientation 속성을 사용하여 디바이스의 화면 회전 가능 여부를 확인합니다. 만약 screenOrientationSCREEN_ORIENTATION_UNSPECIFIED이면 화면 회전이 가능한 것입니다.

다음은 위의 단계를 코드로 구현한 예시입니다:

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

class ScreenRotationPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Screen Rotation'),
      ),
      body: Center(
        child: FutureBuilder<bool>(
          future: _isScreenRotationEnabled(),
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              if (snapshot.data!) {
                return Text('Screen Rotation is enabled');
              } else {
                return Text('Screen Rotation is disabled');
              }
            } else {
              return CircularProgressIndicator();
            }
          },
        ),
      ),
    );
  }

  Future<bool> _isScreenRotationEnabled() async {
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
    return androidInfo.screenOrientation == AndroidScreenOrientation.SCREEN_ORIENTATION_UNSPECIFIED;
  }
}

위의 예시에서는 device_info 라이브러리를 사용하여 안드로이드에서 디바이스 정보를 가져오고, 가져온 정보를 통해 화면 회전 가능 여부를 확인합니다. FutureBuilder 위젯을 사용하여 화면 회전 가능 여부를 표시하고, 로딩 중인 경우는 CircularProgressIndicator를 표시합니다.

위의 코드에서는 안드로이드 디바이스의 화면 회전 가능 여부만 확인했지만, iOS 디바이스에서도 비슷한 방식으로 확인할 수 있습니다. await deviceInfoPlugin.iosInfo 를 사용하여 iOS 디바이스 정보를 가져올 수 있습니다.

이제 ScreenRotationPage를 애플리케이션의 라우터에 등록하고 사용하면, 디바이스의 화면 회전 가능 여부를 확인할 수 있습니다.

결론

Flutter에서 device_info 라이브러리를 사용하여 디바이스의 화면 회전 가능 여부를 확인하는 방법을 알아보았습니다. 이를 통해 애플리케이션의 UI를 적절히 회전시키는 등 화면 회전에 대한 사용자 경험을 향상시킬 수 있습니다.

참고: device_info 패키지