我正在将我的应用程序从Java(Android)转换为Flutter(Dart),但找不到从上下文或国家/地区代码中获取货币的方法。
Java代码:
String country = Locale.getDefault().getCountry();
String currency = Currency.getInstance(new Locale("", country)).getCurrencyCode();
Dart中的代码
Locale locale = Localizations.localeOf(context);
String country = locale.countryCode;
答案 0 :(得分:4)
如果您的应用支持用户的语言环境,那么可接受的答案确实有效,但是,如果您未明确添加对用户的语言环境的支持,则无效。
相反,您可以使用Platform.localeName
软件包中的dart:io
,该软件包将使用设备本身的语言环境。
例如:
import 'package:intl/intl.dart';
import 'dart:io';
String getCurrency() {
var format = NumberFormat.simpleCurrency(locale: Platform.localeName);
return format.currencySymbol;
}
答案 1 :(得分:3)
您可以使用currency_pickers给出用户国家代码来获取货币代码。
CurrencyPickerUtils.getCountryByIsoCode('PK').currencyCode.toString() // PKR
CurrencyPickerUtils.getCountryByIsoCode('US').currencyCode.toString() // USD
答案 2 :(得分:2)
默认情况下,国家/地区符号以美元为单位,要获得本地符号,请添加如下名称属性(对于尼日利亚 - 奈拉):
import 'package:intl/intl.dart';
import 'dart:io';
String getCurrency() {
var format = NumberFormat.simpleCurrency(locale: Platform.localeName, name: 'NGN');
return format.currencySymbol;
}
答案 3 :(得分:1)
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
}
答案 4 :(得分:1)
经过长时间的研究,解决了我的问题的唯一解决方案是使用支持您的符号的字体。
这是我的符号“₺”,支持它的字体是“ Roboto”,您可以像这样为文本指定字体:
function myFunction(x) {
x.classList.toggle('change');
document.body.style.overflow = 'hidden'
}