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
相关产品推荐
相关产品推荐

