如何在Flutter的SnackBar组件中使用全局变量?
实现方法
你要做的是先把这段带动态参数的文本加到多语言配置里,再在SnackBar调用时用getTranslated取翻译并替换变量即可,操作如下:
- 首先在你的多语言资源文件中新增对应翻译条目,预留好价格的占位符,示例:
英语配置参考:
"minimum_order_notice": "Minimum order amount is {min_order_val}, you have {current_val} in your cart, please add more items."
中文配置可对应写为:"minimum_order_notice": "最低下单金额为{min_order_val},您当前购物车金额为{current_val},请添加更多商品后再提交。"
- 替换你原来的SnackBar代码,把硬编码文本换成
getTranslated调用,把两个价格动态替换到占位符位置:
ScaffoldMessenger.of(context).showSnackBar(SnackBar( content: Text( getTranslated('minimum_order_notice', context) .replaceAll('{min_order_val}', PriceConverter.convertPrice(context, Provider.of<SplashProvider>(context, listen: false).configModel.minimumOrderValue)) .replaceAll('{current_val}', PriceConverter.convertPrice(context, _itemPrice)) ), backgroundColor: Colors.red, ));
如果你项目里的getTranslated方法本身支持传参数做插值替换,直接按方法要求传参即可,不需要手动调用replaceAll。
内容的提问来源于stack exchange,提问作者Metehan Gezer
相关产品推荐
相关产品推荐

