Flutter PRO 팁 #1: 사용자의 언어, 국가 및 통화 가져오기
Flutter에는
Localizations.localeOf(context)
객체를 가져오는 Locale
메서드가 있습니다. 이 객체는 사용자에 대한 현지화 정보를 보유하고 있습니다. 그러나 이 정보는 애플리케이션이 지원하는 로케일로 '제한'됩니다.예를 들어 애플리케이션이 미국과 영국에서 영어를 지원한다고 가정해 보겠습니다. 기본 위젯은 다음과 같습니다.
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
title: 'Flutter get locale',
supportedLocales: [
Locale('en', 'US'),
Locale('en', 'GB'),
],
localizationsDelegates: [
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
home: MainScreen(),
);
}
}
이제 다음을 사용하여 이 데이터를 얻을 수 있습니다.
final locale = Localizations.localeOf(context);
final language = locale.languageCode;
final country = locale.countryCode;
final format = NumberFormat.simpleCurrency(locale: locale.toString());
final currencyName = format.currencyName;
final currencySymbol = format.currencySymbol;
전화가 미국 영어로 설정되어 있고 위의 코드를 실행하면 다음 정보를 얻을 수 있습니다.
Language: en
Country: US
Currency: USD
전화가 영국 영어로 구성된 경우 다음을 얻게 됩니다.
Language: en
Country: GB
Currency: GBP
그러나 전화기가 French of France를 구성한 경우 다음과 같이 표시됩니다.
Language: en
Country: US
Currency: USD
미국 영어 및 영국 영어 이외의 다른 현지화 설정에서 이 데이터를 가져오려고 하는 경우에도 마찬가지입니다.
보시다시피 어떤 경우에는 이 데이터를 얻는 것이 우리가 구성한 로케일로 완전히 제한하려는 경우에 유용할 수 있습니다. 그러나 앱이 공식적으로 '지원'하는지 여부에 관계없이 사용자의 언어, 국가 및 통화를 가져와야 하는 경우가 많습니다. 이를 위해 devicelocale 플러그인을 사용할 것입니다.
final locale = await Devicelocale.currentLocale;
String language = '';
String country = '';
if (locale != null && locale.length >= 2) {
try {
language = locale.substring(0, 2);
} catch (e) {
debugPrint('Error when fetching user language: $e');
}
}
if (locale != null && locale.length >= 5) {
try {
country = locale.substring(3, 5);
} catch (e) {
debugPrint('Error when fetching user country: $e');
}
}
final format = NumberFormat.simpleCurrency(locale: locale.toString());
final currency = format.currencyName;
final currencySymbol = format.currencySymbol;
이전 예에서 프랑스의 프랑스어에 대한 데이터를 얻으려고 하면 다음을 얻게 됩니다.
Language: fr
Country: FR
Currency: EUR
요약하자면, 앱에서 지원하는 로케일 내에서 위치 데이터를 가져오려면
Localizations.localeOf(context)
를 사용하십시오. 그러나 supportedLocales
에 지정되지 않은 데이터를 가져오려면 devicelocale 패키지를 사용하십시오.
Reference
이 문제에 관하여(Flutter PRO 팁 #1: 사용자의 언어, 국가 및 통화 가져오기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/svprdga/flutter-pro-tip-1-get-the-language-country-and-currency-of-your-user-2apl텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)