[flutter] device_info 라이브러리를 이용하여 디바이스의 로케일 설정 가능한 언어 목록 가져오기

앱을 개발할 때, 디바이스의 로케일(언어 설정)을 가져와야 하는 경우가 있습니다. Flutter에서는 device_info 라이브러리를 사용하여 디바이스의 정보를 쉽게 얻을 수 있습니다. 이번 포스트에서는 device_info 라이브러리를 이용하여 디바이스의 로케일 설정 가능한 언어 목록을 가져오는 방법에 대해 알아보겠습니다.

device_info 라이브러리

device_info 라이브러리는 Flutter 앱에서 디바이스의 정보를 제공하는 패키지입니다. 디바이스의 모델명, 운영체제 버전 등 다양한 정보를 얻을 수 있습니다. 이를 이용하여 로케일 설정 가능한 언어 목록을 가져오는 방법에 대해 알아보겠습니다.

로케일 설정 가능한 언어 목록 가져오기

먼저, device_info 패키지를 프로젝트에 추가해야 합니다. pubspec.yaml 파일에 아래와 같이 device_info를 추가합니다.

dependencies:
  flutter:
    sdk: flutter
  device_info: ^2.0.2

그리고 pubspec.yaml 파일이 있는 디렉토리에서 아래 명령을 실행하여 패키지를 설치합니다.

flutter pub get

이제 device_info 패키지를 사용하여 디바이스의 로케일 설정 가능한 언어 목록을 가져올 수 있습니다. 아래는 예시 코드입니다.

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Language List',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: LanguageList(),
    );
  }
}

class LanguageList extends StatefulWidget {
  @override
  _LanguageListState createState() => _LanguageListState();
}

class _LanguageListState extends State<LanguageList> {
  List<String> languages = [];

  @override
  void initState() {
    super.initState();
    getLocaleLanguages();
  }

  void getLocaleLanguages() async {
    DeviceInfoPlugin deviceInfo = DeviceInfoPlugin();
    AndroidDeviceInfo androidInfo = await deviceInfo.androidInfo;
    languages = androidInfo.supportedLocales.map((locale) => locale.languageCode).toList();
    // iOS의 경우, iOSDeviceInfo 사용
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Language List'),
      ),
      body: ListView.builder(
        itemCount: languages.length,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text(languages[index]),
          );
        },
      ),
    );
  }
}

위의 코드에서 getLocaleLanguages 메소드에서는 device_info 패키지를 사용하여 디바이스의 로케일 설정 가능한 언어 목록을 가져와서 languages 변수에 저장합니다. Android 기기의 경우 androidInfo.supportedLocales를, iOS 기기의 경우 iOSDeviceInfo를 사용하면 됩니다.

이제 코드를 실행하면 앱 화면에 로케일 설정 가능한 언어 목록이 표시됩니다.

이번 포스트에서는 device_info 라이브러리를 이용하여 디바이스의 로케일 설정 가능한 언어 목록을 가져오는 방법에 대해 알아보았습니다. 이를 활용하여 앱의 로케일 설정에 따라 다양한 언어를 지원할 수 있습니다.