Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter Dart中的货币格式(按区域设置)_Flutter_Dart_Internationalization_Intl - Fatal编程技术网

Flutter Dart中的货币格式(按区域设置)

Flutter Dart中的货币格式(按区域设置),flutter,dart,internationalization,intl,Flutter,Dart,Internationalization,Intl,我可以通过以下方式获得货币格式的数字: final myLocale = Localizations.localeOf(context).toString(); final longNumberFormat = NumberFormat.currency(locale: myLocale, symbol: mySymbol, decimalDigits: 2); print(longNumberFormat.format(1234)); 其结果是: 对于“en_US”区域设置:1234.00美

我可以通过以下方式获得货币格式的数字:

final myLocale = Localizations.localeOf(context).toString();
final longNumberFormat = NumberFormat.currency(locale: myLocale, symbol: mySymbol, decimalDigits: 2);
print(longNumberFormat.format(1234));
其结果是:

对于“en_US”区域设置:1234.00美元

对于区域设置“es”或“es_AR”:1.234,00$

在第一种情况下(en_US)是正确的,但在最后一种情况下(es_AR)是错误的,即阿根廷西班牙语(我的国家),我们不在末尾使用符号,我们在前面使用符号,就像美国一样,但点/逗号是正确的

这是图书馆的错误吗?这有什么办法吗


谢谢

似乎还没有添加
es_AR
,所以它又回到了其他方面,也许是
es
?。也许你可以为这个软件包做些贡献,然后自己添加?我想这是它应该去的地方


编辑:如前所述,该文件是从CLDR生成的,因此不应更改dart文件。也许您可以将问题提交到github页面,或者选择Alan Knight建议的解决方案。

如上所述,数据中没有es_AR。您不能修改该文件,因为它是从CLDR数据生成的,将被覆盖。但您可以在运行时对其进行修改,以添加缺少的条目或修改现有条目。例如,我在这里创建了一个条目,其中我使用了“es”条目并将货币符号(\u00a4)移到了开头

import 'package:intl/intl.dart';
import 'package:intl/number_symbols.dart';
import 'package:intl/number_symbols_data.dart';

main() {
  var argentina = NumberSymbols(
      NAME: "es_AR",
      DECIMAL_SEP: ',',
      GROUP_SEP: '.',
      PERCENT: '%',
      ZERO_DIGIT: '0',
      PLUS_SIGN: '+',
      MINUS_SIGN: '-',
      EXP_SYMBOL: 'E',
      PERMILL: '\u2030',
      INFINITY: '\u221E',
      NAN: 'NaN',
      DECIMAL_PATTERN: '#,##0.###',
      SCIENTIFIC_PATTERN: '#E0',
      PERCENT_PATTERN: '#,##0\u00A0%',
      CURRENCY_PATTERN: '\u00A4#,##0.00\u00A0',
      DEF_CURRENCY_CODE: r'$');

  numberFormatSymbols['es_AR'] = argentina;
  var f = NumberFormat.currency(locale: 'es_AR');
  print(f.format(1234));

}

啊,是的,应该读一下文件顶部的评论。我会更正我的帖子。好的!