[Flutter] Platform 정보를 확인하기 위한 방법 정리

2023. 4. 2. 11:52Developers 공간 [Shorts]/Frontend

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

Flutter를 활용해 앱을 구현하다 보면 Platform의 버전 및 종류 등 다양한 정보를 구분해야하는 경우가 있습니다.

이를 한번에 정리해보고자 합니다.


2. Why? (원인)

  • X

3. How? (해결책)

  • App의 Orientation : portrait(세로 모드)인지 landscape(가로 모드)인지를 구분하기 위해 MediaQuery를 활용합니다.
if (MediaQuery.of(context).orientation == Orientation.portrait){
	// is portrait
}else{
	// is landscape
}
  • Platform의 종류 : 웹인지, 안드로이드인지, iOS인지 등을 dart에 내장되어 있는 io 패키지를 활용하거나 get 패키지를 활용하여 구현할 수 있습니다.
import 'dart:io' show Platform;

//Platform.isAndroid
//Platform.isFuchsia
//Platform.isIOS
//Platform.isLinux
//Platform.isMacOS
//Platform.isWindows

if (Platform.isAndroid) {
  // Android-specific code
} else if (Platform.isIOS) {
  // iOS-specific code
}
import 'package:get/get.dart';
 
bool isWeb = GetPlatform.isWeb;
bool isMobile = GetPlatform.isMobile;
bool isAndroid = GetPlatform.isAndroid;
bool isiOS = GetPlatform.isIOS;
bool isWeb = GetPlatform.isWeb;
bool isWindows = GetPlatform.isWindows;
bool isMac = GetPlatform.isMacOS;
bool isLinux = GetPlatform.isLinux;
bool isFusia = GetPlatform.isFuchsia;
bool isDesktop = GetPlatform.isDesktop;
 
if(!isWeb){
	...
}
  • Platform의 버전 확인 : device info 플러그인을 활용해 SDK 버전 혹은 ios 버전을 알아 낼 수 있습니다.
import 'package:device_info_plus/device_info_plus.dart';

if (Platform.isAndroid) {
  var androidInfo = await DeviceInfoPlugin().androidInfo;
  var release = androidInfo.version.release;
  var sdkInt = androidInfo.version.sdkInt;
  var manufacturer = androidInfo.manufacturer;
  var model = androidInfo.model;
  
  // Android 9 (SDK 28), Xiaomi Redmi Note 7
  print('Android $release (SDK $sdkInt), $manufacturer $model');  
}

if (Platform.isIOS) {
  var iosInfo = await DeviceInfoPlugin().iosInfo;
  var systemName = iosInfo.systemName;
  var version = iosInfo.systemVersion;
  var name = iosInfo.name;
  var model = iosInfo.model;
  
  // iOS 13.1, iPhone 11 Pro Max iPhone
  print('$systemName $version, $name $model');
}
  • Locale 확인 : UI에서 사용되는 언어, 지역 설정, 출력 형식 등을 정의하는 문자열

- 현재 상태

import 'dart:io' show Platform;

// Returns locale string in the form 'en_US'
String languageCode = Platform.localeName.split('_')[0];
String countryCode = Platform.localeName.split('_')[1];
import 'package:flutter_native_timezone/flutter_native_timezone.dart';

final String currentTimeZone = await FlutterNativeTimezone.getLocalTimezone();

- 시스템 셋팅

import 'package:flutter/material.dart';

// Returns the list of locales that user defined in the system settings.
final List<Locale> systemLocales = WidgetsBinding.instance.window.locales;
import 'dart:ui';

final List<Locale> systemLocales = window.locales;

 

 

 


https://stackoverflow.com/questions/50923906/how-to-get-timezone-language-and-county-id-in-flutter-by-the-location-of-device

728x90
반응형