flutter 如何通过国家代码获得货币和货币符号?

nue99wik  于 2023-05-30  发布在  Flutter
关注(0)|答案(7)|浏览(246)

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

aor9mmx11#

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
}
llycmphe

llycmphe2#

如果您的应用支持用户的区域设置,则接受的答案确实有效,但如果您没有显式添加对用户区域设置的支持,则接受的答案无效。
相反,您可以使用dart:io包中的Platform.localeName,它将采用设备本身的区域设置。
例如:

import 'package:intl/intl.dart';
import 'dart:io';

String getCurrency() {
  var format = NumberFormat.simpleCurrency(locale: Platform.localeName);
  return format.currencySymbol;
}
bhmjp9jg

bhmjp9jg3#

默认情况下,国家符号以美元为单位,要获取本地符号,请添加name属性,如下所示(对于尼日利亚- Naira):

import 'package:intl/intl.dart';
import 'dart:io';

String getCurrency() {
  var format = NumberFormat.simpleCurrency(locale: Platform.localeName, name: 'NGN');
  return format.currencySymbol;
}
hwazgwia

hwazgwia4#

经过长时间的搜索,对这个问题的唯一解决办法,解决我的问题是使用一个字体,支持您的符号。
这是我的符号“”,支持它的字体是“Roboto”,你可以为你的文本指定一种字体,就像这样:

Text('₺',
     style: TextStyle(
     fontFamily: 'Roboto',
      )),
xzabzqsa

xzabzqsa5#

您可以使用currency_pickers获取货币代码,方法是向其提供用户国家代码。

CurrencyPickerUtils.getCountryByIsoCode('PK').currencyCode.toString() // PKR
CurrencyPickerUtils.getCountryByIsoCode('US').currencyCode.toString() // USD
aor9mmx1

aor9mmx16#

这非常简单,只需在google上搜索Country符号,然后添加文本小部件,如Text( "₦20000", style: TextStyle( fontSize: 24.0, fontFamily: '' ), )
如果你不确定支持的字体系列,就不需要添加字体系列。

piwo6bdm

piwo6bdm7#

NumberFormat.simpleCurrency(locale:toString())只返回土耳其货币符号的TL;而不是实际的货币符号。
你为什么不直接说“”?
或者您可以选择使用Html(data:'')。你必须将flutter_html添加到pub spec.yaml中才能使用Html
两者都会给予你想要的。。

相关问题