You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flutter_localizations无法按格式将数字转换为货币值

Flutter国际化货币格式转换失效排查与解决

问题情况

已引入flutter_localizations和intl包,按照Flutter国际化文档配置数字转货币格式,但界面仅显示原始数字,未按预期转换为紧凑货币格式。执行过flutter clean,问题仍存在。

ARB文件原错误配置

"amountWithCompactCurrency" : "Current Budget of application : {amount}",
"@amount" : {
  "description" : "Amount with compact currency",
  "placeholders" : {
    "amount" : {
      "type" : "int",
      "format" : "compactCurrency",
      "optionalParameters": {
              "decimalDigits": 2
            }
    }
  }
}

调用代码

var amount = 800000;
AppLocalizations.of(context)!.amountWithCompactCurrency(amount);

界面显示效果:仅显示原始数字


解决步骤

  • 修正ARB元数据键名
    元数据的键名必须和对应的字符串键完全一致,原配置中@amount应为@amountWithCompactCurrency,修正后的ARB配置:

    "amountWithCompactCurrency" : "Current Budget of application : {amount}",
    "@amountWithCompactCurrency" : {
      "description" : "Amount with compact currency",
      "placeholders" : {
        "amount" : {
          "type" : "int",
          "format" : "compactCurrency",
          "optionalParameters": {
                  "decimalDigits": 2
                }
        }
      }
    }
    
  • 重新生成本地化类
    修改ARB文件后,必须重新运行本地化代码生成命令(比如项目中常用的flutter pub run intl_utils:generate),确保格式配置同步到自动生成的AppLocalizations类中,仅执行flutter clean无法更新生成的代码。

  • 校验Locale配置
    确认App已正确配置目标Locale(如en_US、zh_CN),部分小众Locale可能不支持compactCurrency格式,建议先使用主流Locale测试。

  • 确保依赖版本兼容
    执行flutter pub upgrade intl更新intl包到与当前Flutter SDK兼容的版本,版本不匹配可能导致格式解析失效。


内容的提问来源于stack exchange,提问作者krishnaji

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:02:28