如何按国家/地区代码获取货币和货币符号?

时间:2019-11-08 11:56:32

标签: flutter

我正在将我的应用程序从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;

5 个答案:

答案 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' 
}