我正在将我的应用程序从 Java(Android) 转换为 Flutter(Dart),但找不到从上下文或国家/地区代码获取货币的方法。
Java中的代码:
String country = Locale.getDefault().getCountry();
String currency = Currency.getInstance(new Locale("", country)).getCurrencyCode();
Run Code Online (Sandbox Code Playgroud)
Dart 中的代码:
Locale locale = Localizations.localeOf(context);
String country = locale.countryCode;
Run Code Online (Sandbox Code Playgroud)
小智 16
intl包可以解决问题
import 'package:intl/intl.dart';
void currency() {
Locale locale = Localizations.localeOf(context);
var format = NumberFormat.simpleCurrency(locale: locale.toString());
print("CURRENCY SYMBOL ${format.currencySymbol}"); // $
print("CURRENCY NAME ${format.currencyName}"); // USD
}
Run Code Online (Sandbox Code Playgroud)
小智 11
默认情况下,国家/地区符号以美元为单位,要获取本地符号,请添加如下名称属性(对于尼日利亚 - 奈拉):
import 'package:intl/intl.dart';
import 'dart:io';
String getCurrency() {
var format = NumberFormat.simpleCurrency(locale: Platform.localeName, name: 'NGN');
return format.currencySymbol;
}
Run Code Online (Sandbox Code Playgroud)
经过长时间搜索这个问题,解决我的问题的唯一解决方案是使用支持您的符号的字体。
\n这是我的符号“\xe2\x82\xba”,支持它的字体是“Roboto”,您可以为文本指定字体,如下所示:
Text(\'\xe2\x82\xba\',\n style: TextStyle(\n fontFamily: \'Roboto\',\n )),\n
Run Code Online (Sandbox Code Playgroud)\n
小智 9
如果您的应用程序支持用户的语言环境,则接受的答案确实有效,但如果您没有明确添加对用户语言环境的支持,则它不起作用。
相反,您可以Platform.localeName
从dart:io
将采用设备本身的语言环境的包中使用。
例如:
import 'package:intl/intl.dart';
import 'dart:io';
String getCurrency() {
var format = NumberFormat.simpleCurrency(locale: Platform.localeName);
return format.currencySymbol;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10515 次 |
最近记录: |