액티브 스킬/플러터

<플러터> 안드로이드 네비게이션 스타일 확인하는 방법

디벅잉 2023. 1. 15. 17:01
728x90

 

🧭

 

네이게이션 스타일

안드로이드는 일반적으로 '메뉴, 홈버튼, 뒤로가기' 묶음을 가지는 네비게이션 스타일을 가집니다.

하지만 iOS 처럼 스와이프 제스쳐로 설정을 변경할 수 있습니다.

 

플러터에서 해당 설정을 확인하는 방법

그렇다면 사용자가 버튼 형태의 스타일을 사용하는지 스와이프 제스쳐를 사용하는지 확인할 수 있을까요?

디바이스의 높이를 계산하면 사용자가 어떤 스타일을 사용하고 있는지 파악할 수 있습니다.

디바이스의 실제 높이에서 화면에 사용하는 높이를 빼고 나면 남는 부분이 안드로이드 네비게이션의 높이일 것입니다.

 

디바이스 실제 높이

디바이스의 실제 높이를 확인하려면 device_info_plus라는 라이브러리가 필요합니다.

해당 라이브러리를 통해 다음과 같이 디바이스 높이를 알 수 있습니다.

final DeviceInfoPlugin deviceInfoPlugin = DeviceInfoPlugin();
final AndroidDeviceInfo androidInfo = await deviceInfoPlugin.androidInfo;
final deviceHeight = androidInfo.displayMetrics.heightPx;

 

네비게이션 높이 계산

디바이스 높이를 픽셀 비율로 나누어서 dp 높이를 계산하고 화면 높이를 빼면 네비게이션 높이를 구할 수 있습니다.

final screenHeight = MediaQuery.of(context).size.height;
final devicePixelRatio = MediaQuery.of(context).devicePixelRatio;

final androidNavHeight = deviceHeight / devicePixelRatio - screenHeight;

안드로이드 s20+, s9+ 2개의 기기를 확인한 결과 버튼 형태의 스타일이 적용된 경우 48, 스와이프 제스쳐 스타일이 적용된 경우 약 14.857... 이라는 결과를 얻을 수 있었습니다.

 

📌

 

https://pub.dev/packages/device_info_plus

 

device_info_plus | Flutter Package

Flutter plugin providing detailed information about the device (make, model, etc.), and Android or iOS version the app is running on.

pub.dev

 

728x90