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

如何在Flutter的SnackBar组件中使用全局变量?

实现方法

你要做的是先把这段带动态参数的文本加到多语言配置里,再在SnackBar调用时用getTranslated取翻译并替换变量即可,操作如下:

  1. 首先在你的多语言资源文件中新增对应翻译条目,预留好价格的占位符,示例:

英语配置参考:
"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},请添加更多商品后再提交。"

  1. 替换你原来的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:57:00