我已经根据值将这种货币模式作为前缀符号(+或-)

static final String _currencyWithPrefixSignAndSymbol = "+ \u00A4 0.00 ;- \u00A4 0.00";

如果值是正数,则模式加一个+前缀;如果值是负数,则模式-;

问题:我需要在值为0时删除这些符号,是否可以在模式中执行此操作?不用做类似字符串的事情。在最后替换吗?

最佳答案

作为一种选择。
从Dart 2.7开始,您可以创建扩展。
因此,您可以像这样创建num扩展名:

extension MyCurrencyFormat on num {
  static final _currencyWithPrefixSignAndSymbol = NumberFormat("+ \u00A4 0.00;- \u00A4 0.00");
  static final _currencyZero = NumberFormat("  \u00A4 0.00");

  String toCurrencyFormat() {
    return this == 0 ? _currencyZero.format(this) : _currencyWithPrefixSignAndSymbol.format(this);
  }
}

然后以这种方式在代码中使用它:
var str1 = 42.toCurrencyFormat(); //  + USD 42.00
var str2 = 0.toCurrencyFormat();  //  USD 0.00

08-06 08:26